HyprTile v215 - F11 Wallpaper Pipeline Stage Controls
======================================================

Stage 1 - persistent data model
- wallpaper_shader_chain items now persist enabled + opacity.
- Old configs default to enabled=1 / opacity=1.0.
- Legacy wallpaper_shader_pack mirrors the first enabled stage.

Stage 2 - renderer semantics
- Added wallpaperd --pack-opacity.
- Pack opacity is applied once after the complete pack, including multi-pass packs.
- A dedicated stage-base texture prevents long multi-pass packs from overwriting
  the source they must be composited against.
- Existing manifest/raw per-pass opacity remains unchanged.

Stage 3 - non-destructive stage disable
- Disabled stages remain in config with preset/text/font/opacity intact.
- Disabled stages are omitted from wallpaperd startup and use no render passes.
- Enabling a stage validates the wallpaperd 16-pass limit first.

Stage 4 - F11 controls
- ON/OFF button on every Wallpaper Pipeline row.
- Edit panel has stage Opacity with -5%, +5%, 100% reset.
- Active-stage and active-pass counts reflect disabled stages correctly.

Stage 5 - preview/persistence
- Wall Preview, Revert Wall and Apply All use the same stage model.
- Preview changes remain temporary until Apply All.

Verification
- app_config load/save harness: legacy defaults, disabled-stage metadata and
  first-enabled legacy mirror verified.
- app_config.c and overlay_hyprland_config.c pass targeted -Wall/-Wextra
  syntax checks with local dependency stubs.
- config.json parses as valid JSON; git diff --check is clean.
- Catalog scan: 346 presets, 21 multi-pass presets, max 6 internal passes.
- Full native wallpaperd build still requires the real Wayland/EGL/GLES2,
  SDL3/SDL3_ttf, Fontconfig, Pulse/FFmpeg development packages.
