Breaking Changes
- PRNG replaced: Mulberry32 (32-bit state, djb2 hash) is replaced with pragmastat's
Rngclass (xoshiro256++, 256-bit state, FNV-1a hash) for cross-language reproducibility. All seeded outputs produce different avatars.mulberry32andstringToSeedare no longer exported; useRngfrom 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
alwaysTransparentBackgroundprop: NewAvatarPickerprop forces transparent avatar backgrounds and hides the background color controlshapeParamonThemeinterface: 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/onSavePngcallback 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
VERSIONfile as single source of truth for package versions - Consolidated CI into
ci.yml(all branches) andpublish.yml(manual dispatch), replacing the previousbuild.yml,deploy.yml, andrelease.ymlworkflows - Removed geometric theme
Documentation
- Updated all READMEs and AGENTS.md to accurately reflect 14 themes, pragmastat PRNG, complete
AvatarEditor/AvatarPickerprops,generateGalleryAPI,styles.cssimport 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