veilamp 0.3.6

This release adds native tracker-music playback, a big expansion of what custom
layouts and skins can do, theme variants, and a round of fixes.

New

  • Tracker & demoscene music playback. veilamp now plays classic tracker
    modules natively — MOD, XM, S3M, IT and many relatives. They run through the
    full audio pipeline, so you get the equalizer, ReplayGain, gapless/crossfade,
    and the visualizer just like any other track, with the format shown in the
    signal-path badge. (Linux builds for now.)

  • Far more powerful custom layouts. Skin authors can now build near-complete
    interfaces: clickable buttons for every transport and navigation action; app
    screens (Library, Radio, Podcasts, EQ, Lyrics, Friends, Settings) and plugin
    panels placed right in the layout; show/hide panels; global search (Ctrl+K);
    and a sleep timer. New building blocks include a radial tick-arc widget that
    doubles as a seek or volume control, plugin slots that embed a visualizer or
    other plugin, scrolling text, and titles-only playlists. Layouts can also show
    live readouts — progress, volume, queue position, format, source, and loudness
    meter values — and react to playback state in their own CSS.

  • Theme variants. A theme or skin can offer named variants (such as accent
    colours); pick one from its card in Settings → Appearance and it’s remembered
    per theme.

  • Layout styling that follows the theme. Skin packages can ship layout
    specific CSS that applies whenever their layout is active, and action icons are
    now themeable monochrome glyphs that follow your theme’s colours (and can be
    swapped out by a skin).

  • Sort an artist’s albums by year. The artist page gains a Name / Year toggle
    and shows each album’s year. (Years appear after the next library rescan.)

  • Visualizer plugins as modes. A plugin that provides a visualizer now shows
    up as its own mode on the Visualizer screen, fullscreen included.

Fixed

  • A broken custom layout no longer blanks the window. A skin layout that
    failed to load used to leave an empty, unrecoverable window with nothing
    logged. It now falls back to the default layout and reports the error, so a bad
    layout degrades gracefully instead of locking you out.
  • No more mid-song jumps with gapless playback when switching to repeat-one
    or editing the queue.
  • Themes’ UI fonts are respected again instead of falling back to the default
    font.
  • Skin packages can use the full documented CSS budget (512 KiB), rather than
    the smaller single-file theme limit.