HyprTile wallpaper compositor: Gradient + Image Layers
======================================================

1. Alpha-aware stage compositing
--------------------------------
Wallpaper packs may opt into pixel-alpha stage composition with:

    alpha=1

For those stages the effective per-pixel mix is:

    stage_opacity * shader_output_alpha

Opaque legacy packs keep the previous fast path and previous blend semantics.
Internal per-pass opacity remains independent of this stage-alpha behavior.

2. Gradient Layer pack
----------------------
New pack id: gradient-layer

Presets:
- default / linear
- linear-alpha
- radial
- radial-alpha
- conic
- conic-alpha

The shader exposes a CSS-like parameter model through ordinary .params:
linear/radial/conic type, angle, center, radius, repeat, 2..4 stop positions,
RGBA stop colors and global alpha. RGBA alpha therefore acts as a spatial
blend-strength mask for the Gradient Layer over the preceding canvas.
All values are automatically visible in the existing F11 parameter override UI.

3. Image Layer pack
-------------------
New pack id: image-layer

Presets:
- default / fullscreen
- contain
- cover
- card
- card-left
- card-right

New wallpaperd CLI stage input:

    --pack image-layer:card --pack-image /path/to/image.png

The Image Layer exposes position, size, rotation, fit mode, alpha, tint,
corner radius and feather as ordinary .params. Multiple Image Layer stages may
therefore place multiple independently transformed images on the same canvas.
Transparent pixels in the source image and the layer alpha participate in the
same alpha-aware stage compositor.

4. F11 integration
------------------
Packs exposing the u_layer_image_tex ABI are discovered dynamically and shown
with [Image] capability. Edit provides a local image picker plus Clear. All
layout controls remain dynamic .params overrides and require no hardcoded UI
knowledge of the Image Layer pack.

5. Persistence / sharing privacy
--------------------------------
The local stage image_path is persisted in ~/.hyprtile/config.json so a local
look survives restarts. It is deliberately stripped from .hyprlook exports.
Portable parameter overrides, blend, opacity, position, size, rotation, tint,
etc. remain shareable. A recipient chooses their own local image after import.
