Skip to content

Hashavatar 0.10.0

Choose a tag to compare

@eldryoth eldryoth released this 17 May 16:48
· 16 commits to main since this release
Immutable release. Only release title and notes can be modified.
v0.10.0
43efcb9

hashavatar 0.10.0

0.10.0 introduces the visual layer model while keeping the existing
AvatarOptions rendering path stable.

Added

  • AvatarAccessory with none, glasses, hat, headphones, crown,
    bowtie, eyepatch, scarf, halo, and horns.
  • AvatarColor with default, neon-mint, pastel-pink, crimson, gold,
    and deep-sea-blue.
  • AvatarExpression with default, happy, grumpy, surprised, sleepy,
    winking, cool, and crying.
  • AvatarShape with square, circle, squircle, hexagon, and octagon.
  • AvatarStyleOptions for explicit kind, background, accessory, color,
    expression, and frame-shape selection.
  • Style-aware raster, SVG, and encode APIs:
    • render_avatar_style_for_id
    • render_avatar_svg_style_for_id
    • encode_avatar_style_for_id
    • namespace and identity-options variants for each
  • Automatic style APIs:
    • render_avatar_auto_for_id
    • render_avatar_svg_auto_for_id
    • encode_avatar_auto_for_id
    • namespace and identity-options variants for each
  • Public digest-byte constants for automatic style derivation.
  • Family-aware face anchors for accessory and expression placement.
  • README option catalog covering all public enum values and the difference
    between AvatarOptions and AvatarStyleOptions.

Compatibility

Existing AvatarOptions output is unchanged. Legacy options map to
accessory = none, color = default, expression = default, and
shape = square.

Automatic style rendering is opt-in. It derives kind, background, accessory,
color, expression, and shape from distinct identity digest bytes using each
enum's ALL list.

Accessories and expressions are deterministic no-ops for non-face avatar
families where the layer cannot be placed sensibly. For example, paws with an
eyepatch renders the baseline paws avatar rather than placing a patch at an
arbitrary canvas position.

Security And Testing

  • README security guidance now includes explicit caller-side zeroization and
    service-side render-concurrency examples for high-assurance deployments.
  • Fuzz coverage now exercises the style-aware render and encode APIs.
  • Golden fingerprints cover representative layered avatars and automatic style
    output.
  • Tests enforce parser/display round trips, enum ALL drift protection,
    distinct automatic digest offsets, manual layer selection, and raster/SVG
    support for all baseline layer variants.
  • Tests enforce deterministic no-op behavior for unsupported family/layer
    combinations.