darkly 0.5.0

A GPU-native paint engine on wgpu: brushes, layers, blend modes, masks, selections, and undo.
Documentation
use crate::config::schema::{Pref, PrefKind, SchemaSection, WidgetHint};

// Note: these keep the historic snake_case key names to preserve existing
// Rust callers. New prefs should use camelCase dot-paths.
const PREFS: &[Pref] = &[
    Pref {
        key: "animation.veil_divisor",
        display_name: "Veil animation divisor",
        description: Some(
            "How often animated veils tick, as a fraction of the master frame rate. 1 = every frame, 2 = every other, 4 = every fourth.",
        ),
        kind: PrefKind::Int { min: 1, max: 16 },
        widget: WidgetHint::Auto,
    },
    Pref {
        key: "animation.overlay_divisor",
        display_name: "Overlay animation divisor",
        description: Some("Divisor for marching-ants selection overlays."),
        kind: PrefKind::Int { min: 1, max: 16 },
        widget: WidgetHint::Auto,
    },
    Pref {
        key: "animation.void_divisor",
        display_name: "Void animation divisor",
        description: Some(
            "How often animated void layers re-render, as a fraction of the master frame rate. \
             Voids piggyback on the same clock as veils so ticks line up.",
        ),
        kind: PrefKind::Int { min: 1, max: 16 },
        widget: WidgetHint::Auto,
    },
];

pub fn register() -> SchemaSection {
    SchemaSection {
        id: "animation",
        display_name: "Animation",
        description: Some("Tick rates for animated overlays and veils."),
        icon: Some("fa6-solid:stopwatch"),
        order: 60,
        prefs: PREFS,
    }
}