Skip to contents

artutils 0.10.0

Breaking Changes

  • 15-Metric Benchmark System: calcArtworkBenchmarks() now returns 5 metrics per category instead of 3
    • Time & Effort: Added color_generation_rate, early_late_color_ratio
    • Skill & Artistry: Added strokes_per_unique_color, frame_color_stability
    • Complexity & Detail: Added frame_color_variance, technique_phase_count
    • Migration Required: Applications expecting 3 components per category must be updated
    • Benchmark scores will change as they now average 5 metrics instead of 3

Major Changes

  • Updated calcArtworkBenchmarks() to query production artwork_stats table instead of test artwork_stats2
  • Added database schema validation with warnings for missing metrics
  • Enhanced NULL/NA handling with user notifications
  • Improved test coverage for benchmark calculations

New Features

  • Database schema validation automatically handles missing columns
  • Transparent NA metric reporting for debugging
  • Comprehensive unit tests for 15-metric framework

Bug Fixes

  • Fixed incorrect benchmark scores in modGallery (was showing 99%, 16%, 66% instead of correct values)
  • Resolved issue with test table query causing stale data

Documentation

  • Updated AGENTS.md with complete 15-metric framework documentation
  • Added migration guide for applications using benchmark data
  • Enhanced function documentation with metric descriptions

Performance

  • No performance degradation despite additional metrics
  • Query optimization notes added for large portfolios (100+ artworks)

Dependencies

  • Requires artcore >= 0.2.0
  • Database requires 7 new columns in app.artwork_stats table:
    • color_generation_rate
    • early_late_color_ratio
    • strokes_per_unique_color
    • frame_color_stability
    • frame_color_variance
    • technique_phase_count

Migration Guide

Applications using calcArtworkBenchmarks() must be updated:

Before (3 metrics per category):

benchmarks$time_effort$components  # length = 3
# c(drawing_hours, brush_strokes, ave_bpm)

After (5 metrics per category):

benchmarks$time_effort$components  # length = 5
# c(drawing_hours, brush_strokes, ave_bpm, color_generation_rate, early_late_color_ratio)

Compatibility Check

To check if your code needs updating:

benchmarks <- calcArtworkBenchmarks(artist, artwork)
if (length(benchmarks$time_effort$components) != 5) {
  warning("Using old version of artutils - please update")
}