Skip to content

Releases: gemmology-dev/mineral-database

v2.3.0 — Embedded crystal models

05 May 02:52

Choose a tag to compare

Highlights

All 208 expressions with a valid CDL now ship with embedded SVG, STL, and glTF crystal models in the SQLite database.

Changes

  • Generated model_svg, model_stl, model_gltf for every expression with valid CDL (208/208 coverage)
  • Fixed 11 invalid CDL strings whose half-space intersection was unbounded:
    • added terminating pinacoid faces (orthorhombic, monoclinic, tetragonal, triclinic prisms)
    • replaced ~ radial[cluster] shorthand with explicit forms (hematite-kidney-ore)
    • parenthesised nested-growth groups (Lechleitner emerald overgrowth)
  • Patched scripts/generate_models.py to handle numpy.int64 in glTF extras via a NumPy-aware JSON encoder

Notes

  • Database grows from 876 KB → 8.2 MB due to embedded geometry assets
  • 8 expressions intentionally have empty CDL (assembled stones: doublets/triplets/glass simulant) and ship without models
  • All 131 tests pass

v2.2.1 — CI: npm trusted publishing

04 May 09:49

Choose a tag to compare

No functional change vs v2.2.0. This release re-cuts the package to pick up the OIDC trusted-publishing workflow.

Background: release events execute the workflow file from the tagged commit, so v2.2.0 ran the old token-based workflow (which failed with 404 because the long-lived NPM_TOKEN had lost its scope on @gemmology/*). v2.2.1 ships from a commit that includes the OIDC workflow.

Install

pip install gemmology-mineral-database==2.2.1
npm install @gemmology/mineral-data@2.2.1

Database content is identical to v2.2.0: 159 families, 216 expressions.

v2.2.0 — FGA Foundation + Diploma coverage gap-fill

04 May 09:47

Choose a tag to compare

What's new

Closes Gem-A FGA Foundation + Diploma syllabus content gaps identified in the May 2026 audit.

Database growth: 121 → 159 families · 171 → 216 expressions

Added (38 families)

Natural species (23): ametrine, andalusite, benitoite, bronzite, chrome-diopside, chrysocolla, coral, goshenite, hauyne, hematite, hydrogrossular, jet, kornerupine, maw-sit-sit, maxixe-beryl, moldavite, musgravite, obsidian, scapolite, serpentine, sinhalite, star-diopside, taaffeite

Synthetics (6): Czochralski sapphire, flux + hydrothermal alexandrite, hydrothermal ruby, Kashan flux ruby, Lechleitner emerald

Simulants (9): ambroid, bone, copal, dyed howlite, dyed magnesite, French jet, reconstructed turquoise, Slocum stone, vulcanite

Validation

  • 131 tests pass
  • All values verified against Gem-A, Journal of Gemmology, G&G, Read 7th ed., or Mindat
  • Source-of-truth verification manifest reviewed 218 claims pre-build

Install

pip install gemmology-mineral-database==2.2.0
npm install @gemmology/mineral-data@2.2.0

v2.1.2 - Clean crystal models in npm package

17 Feb 05:17

Choose a tag to compare

Changes

  • npm package now includes pre-rendered SVG/STL/glTF models for 163/171 expressions
  • SVG renders show crystal structure only (no axes, grid, or coordinate labels)
  • Transparent SVG backgrounds for clean integration
  • Package size increased from ~576KB to ~7.5MB due to embedded 3D models

Model Style

Before: Crystal with axes, grid panes, coordinate labels (a, b, c)
After: Clean crystal structure only with transparent background

v2.1.1 - Fix crystal model generation for pyroxenes and amphiboles

17 Feb 03:44

Choose a tag to compare

Changes

  • Fix CDL expressions for 5 minerals (jadeite, enstatite, actinolite, tremolite, spodumene) by adding {001} basal pinacoid to close crystal forms
  • Pre-rendered SVG/STL/glTF models now included for 163/171 expressions
  • Remaining 8 without models are composites/glass with no crystal morphology

Model Coverage

Format Count Coverage
SVG 163/171 95.3%
STL 163/171 95.3%
glTF 161/171 94.2%

v2.1.0

16 Feb 05:08

Choose a tag to compare

Mineral Database v2.1.0

New mineral families (25)

Garnet endmembers: Almandine, Andradite, Grossular, Hessonite, Pyrope, Uvarovite, Colour-Change Garnet

Quartz varieties: Chalcedony, Rose Quartz, Smoky Quartz

Pyroxenes: Augite, Enstatite, Jadeite, Diopside (enriched)

Amphiboles: Actinolite, Nephrite, Tremolite

Tourmaline species: Dravite, Elbaite, Schorl

Corundum varieties: Padparadscha, Pink Sapphire

Feldspars: Andesine, Bytownite, Sanidine

Other: Spodumene

Database enrichment

  • 93 natural mineral families (up from 68)
  • 171 expressions (up from 141)
  • 13 mineral groups with query API (list_mineral_groups(), list_families_by_group())
  • Dana category classification on all natural minerals (silicates, oxides, carbonates, etc.)
  • Fluorescence data on ~20 minerals (UV response, colour, intensity)
  • Diagnostic features on ~20 minerals (inclusions, pleochroism, colour zoning, etc.)

API additions

  • list_mineral_groups() - list all 13 mineral groups
  • list_families_by_group(group) - list families within a group (e.g. "garnet", "beryl")
  • CLI --groups argument for group listing

Testing

  • 131 tests (up from 79), all passing

v2.0.2

16 Feb 03:15

Choose a tag to compare

Fix name stutter for multi-expression families and correct amorphous system detection in legacy minerals table

v2.0.1 -- CDL Expression Overhaul

16 Feb 02:56

Choose a tag to compare

CDL Expression Overhaul

Comprehensive review and update of all 141 CDL expressions across 96 mineral families.

Changes

  • Doc comments (#!) added to all non-empty CDL expressions with Species, System, and Habit metadata
  • Diagnostic features added to 12 minerals (striations, pleochroism, colour zoning)
  • Tourmaline point group corrected: trigonal[32] -> trigonal[3m]
  • Emerald typo fixed: [inclusion:jardine] -> [inclusion:jardin]
  • New expression: Orthoclase Baveno twin (141 total expressions, up from 140)
  • Synthetics & simulants: Doc comments added to all 24 non-empty CDL strings

Validation

  • 133/141 expressions parse successfully (8 warnings = empty CDL for composites/glass)
  • 79/79 tests pass

v2.0.0 - CDL v2.0 Mineral Database Overhaul

16 Feb 01:08

Choose a tag to compare

v2.0.0 - CDL v2.0 Mineral Database Overhaul

Highlights

  • 140 CDL expressions across 96 mineral families (was 128)
  • Fixed misrepresented minerals: turquoise, pearl, malachite, sodalite, lazurite, opal
  • 7 amorphous, 5 aggregate, 3 nested growth expressions
  • Doc comments on major gem species
  • Updated npm package (@gemmology/mineral-data) with rebuilt minerals.db

v1.8.1 - CDL & Models for Synthetics/Simulants

14 Feb 12:33

Choose a tag to compare

What's Changed

Added CDL crystal structures and pre-generated 3D models (SVG/STL/glTF) for 13 additional synthetic and simulant entries that have valid crystal structures.

Before

  • Only 7 of 28 non-natural entries had CDL and 3D models

After

  • 20 of 28 non-natural entries now have full crystal visualizations
  • 8 entries correctly remain without models (amorphous materials, aggregates, composites)

CDL Assignments

Entry CDL
Synthetic Ruby (Verneuil) trigonal[-3m]:{10-11}@1.0 + {0001}@0.4
Synthetic Sapphire (Verneuil) trigonal[-3m]:{10-10}@1.0 + {10-11}@0.7 | elongate(c:1.8)
CVD Diamond cubic[m3m]:{100}@1.0 + {111}@0.3
Synthetic Alexandrite orthorhombic[mmm]:{110}@1.0 + {010}@0.6 + {111}@0.4
Synthetic Spinel (Verneuil) cubic[m3m]:{111}
Cubic Zirconia cubic[m3m]:{111}@1.0 + {100}@0.8
Moissanite hexagonal[6mm]:{10-10}@1.0 + {0001}@0.6
YAG cubic[m3m]:{110}@1.0 + {211}@0.8
GGG cubic[m3m]:{110}@1.0 + {211}@0.6
Strontium Titanate cubic[m3m]:{100}
Synthetic Rutile tetragonal[4/mmm]:{110}@1.0 + {100}@0.8 + {101}@0.6
LuAG cubic[m3m]:{110}@1.0 + {211}@0.7
Gilson Turquoise triclinic[-1]:{010}@1.0 + {001}@0.9 + {110}@0.7