Breaking Changes

  • PRNG replaced: Mulberry32 (32-bit state, djb2 hash) is replaced with pragmastat's Rng class (xoshiro256++, 256-bit state, FNV-1a hash) for cross-language reproducibility. All seeded outputs produce different avatars. mulberry32 and stringToSeed are no longer exported; use Rng from pragmastat instead.

Features

  • 9 new themes: gems (diamonds, rubies, crystals), weather (sun, rain, snow, lightning), food (sushi, pizza, cupcakes), plants (cacti, sunflowers, mushrooms), birds (parrot, owl, penguin, flamingo), insects (butterfly, beetle, ladybug, bee), mythical creatures, ocean (octopus, jellyfish, crab, whale), and dinosaurs (T-Rex, Triceratops, Brachiosaurus, and more)
  • Constraint-based gallery generation: generateGallery() now distributes themes round-robin and tracks used field values to maximize visual diversity across gallery items; fully schema-driven with no per-theme configuration needed
  • Lock buttons in picker: Each editor control and theme dropdown can be individually locked to preserve its value when clicking Randomize; locks clear automatically on theme change
  • alwaysTransparentBackground prop: New AvatarPicker prop forces transparent avatar backgrounds and hides the background color control
  • shapeParam on Theme interface: Each theme declares its primary shape parameter, enabling programmatic shape enumeration for diverse gallery generation
  • Shuffle picks a random theme: The randomize button now picks a random theme in addition to random params

Improvements

  • People theme: Scaled-down eyes for more natural proportions, eyebrows derived from hair color, skin-derived mouth color, softer expression curves, and redesigned hair styles (bob, long, curly, bald, mohawk, ponytail)
  • Animals theme: Eye color support for bear/koala/panda, eye ellipses behind sleepy eyelids, refined cat ears, fox face mask, dog/penguin iris layers
  • Monsters theme: Four distinct horn types (none, spikes, curved, antlers) with highlight shading, replacing the old binary yes/no toggle
  • Picker header redesign: Spinning dice icon replaces Randomize text button; SVG/PNG save actions added as text buttons via onSaveSvg/onSavePng callback props; flat design without box-shadow
  • Demo app: Dynamic favicon matching current avatar, transparent background checkerboard toggle, GitHub/npm footer links, random initial theme on page load, improved dark theme gradient

Internal

  • Migrated to mise as task runner with a VERSION file as single source of truth for package versions
  • Consolidated CI into ci.yml (all branches) and publish.yml (manual dispatch), replacing the previous build.yml, deploy.yml, and release.yml workflows
  • Removed geometric theme

Documentation

  • Updated all READMEs and AGENTS.md to accurately reflect 14 themes, pragmastat PRNG, complete AvatarEditor/AvatarPicker props, generateGallery API, styles.css import requirement, and corrected file tree

Full Changelog: https://github.com/AndreyAkinshin/avatarka/compare/v1.1.0...v2.0.0

Release notes generated by herald v1.0.4