From b84647c749dabdc011f62d8e8213743fd03f565b Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 22 Jun 2026 10:15:42 +0300 Subject: Add large 2x2 feature tiles and a CSS-grid overview Allow a single photo to be blown up into a large "feature" tile that spans a 2x2 block of the album overview, controlled by a new THUMB_FEATURE_PERCENT (0-100, default 10; 0 disables). Each tile rolls for a feature first, then for a subdivision, otherwise stays a normal square. To pack mixed-size tiles (normal 1x1, subdivided 1x1, feature 2x2) without gaps, the overview is now a real CSS grid with grid-auto-flow: dense, so smaller tiles backfill the holes a 2x2 feature would leave. Tile spacing moved from per-image padding to the grid gap. Feature tiles reuse the img.thumb class and its dramatic hover. THUMB_FEATURE_PERCENT is wired through the same layers as THUMB_SUBDIVIDE_PERCENT: config defaults, 0..100 validation, --print-config, the --feature CLI flag, the usage text, and the shuriken.json / --dry-run metadata, with docs and tests updated. Generated HTML and CSS pass the W3C Nu HTML checker and CSS validator. Setting both percentages to 0 reproduces the previous all-1x1 grid. Co-Authored-By: Claude Opus 4.8 --- docs/configuration.md | 6 ++++-- docs/generation.md | 4 ++-- docs/usage.md | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) (limited to 'docs') diff --git a/docs/configuration.md b/docs/configuration.md index 5d61a27..69a8835 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -14,6 +14,7 @@ values for the current run. | `THUMBHEIGHT` | `300` | Thumbnail height in pixels. Positive integer. | | `MAXPREVIEWS` | `40` | Maximum previews per page. Positive integer. | | `THUMB_SUBDIVIDE_PERCENT` | `30` | Percent chance (0-100) that a preview tile is subdivided into smaller thumbnails (2x2 quad, two stacked wide strips, or two squares plus one wide strip on top/bottom). Each sub-thumbnail is its own clickable photo. `0` disables it. | +| `THUMB_FEATURE_PERCENT` | `10` | Percent chance (0-100) that a preview tile is a large "feature" tile: a single photo spanning a 2x2 block of the overview grid. Rolled before the subdivision chance. `0` disables it. | | `IMAGE_JOBS` | `3` | Parallel jobs for image processing and HTML template rendering. Positive integer. | | `IMAGEMAGICK_TIMEOUT` | `60` | Per-ImageMagick-command timeout in seconds. Positive integer. | | `TAR_TIMEOUT` | `120` | Tarball creation timeout in seconds. Positive integer. | @@ -54,7 +55,8 @@ The checks (details in `src/lib/config.validate.source.sh`): `IMAGE_JOBS`, `INCOMING_DIR`, `DIST_DIR`, `TEMPLATE_DIR`. * **Positive integers**: `THUMBHEIGHT`, `MAXPREVIEWS`, `IMAGE_JOBS`, `IMAGEMAGICK_TIMEOUT`, `TAR_TIMEOUT`; `HEIGHT` is an optional positive integer. -* **Percentage (0-100 integer)**: `THUMB_SUBDIVIDE_PERCENT`. +* **Percentage (0-100 integer)**: `THUMB_SUBDIVIDE_PERCENT`, + `THUMB_FEATURE_PERCENT`. * **`yes`/`no` settings**: `SHUFFLE`, `SPLASH_PAGE`, `STATS_PAGE`, `TARBALL_INCLUDE`, `SYNC_DELETE` (where applicable). * **Readable input**: `INCOMING_DIR` must be a readable directory; `TEMPLATE_DIR` @@ -77,7 +79,7 @@ Generation stops before writing album output when validation fails. `CONFIG_SOURCE`, `INCOMING_DIR`, `DIST_DIR`, `TEMPLATE_DIR`, `FAVICON`, `SOURCE_URL`, `TITLE`, `HEIGHT`, `THUMBHEIGHT`, `MAXPREVIEWS`, -`THUMB_SUBDIVIDE_PERCENT`, `IMAGE_JOBS`, +`THUMB_SUBDIVIDE_PERCENT`, `THUMB_FEATURE_PERCENT`, `IMAGE_JOBS`, `IMAGEMAGICK_TIMEOUT`, `RANDOM_SEED`, `SHUFFLE`, `SPLASH_PAGE`, `STATS_PAGE`, `TARBALL_INCLUDE`, `TARBALL_SUFFIX`, `TAR_TIMEOUT`, `TAR_OPTS`, `SYNC_DELETE`, `SYNC_DESTINATIONS`, `ORIGINAL_BASEPATH`. diff --git a/docs/generation.md b/docs/generation.md index b89cafc..4d29840 100644 --- a/docs/generation.md +++ b/docs/generation.md @@ -97,8 +97,8 @@ metadata records: * generated photo, thumbnail, and HTML file counts; * tarball status (included + file); * effective settings (title, height, thumbheight, maxpreviews, subdivide - percent, image jobs, random seed, shuffle, splash page, stats page, original - basepath) useful for debugging a published album. + percent, feature percent, image jobs, random seed, shuffle, splash page, stats + page, original basepath) useful for debugging a published album. ## Favicon diff --git a/docs/usage.md b/docs/usage.md index f4c8d27..3f85471 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -69,6 +69,7 @@ config variable documented in [configuration.md](configuration.md). | `--thumbheight VALUE` | `THUMBHEIGHT` | | `--maxpreviews N` | `MAXPREVIEWS` | | `--subdivide PERCENT` | `THUMB_SUBDIVIDE_PERCENT` | +| `--feature PERCENT` | `THUMB_FEATURE_PERCENT` | | `--image-jobs N` | `IMAGE_JOBS` | | `--random-seed VALUE` | `RANDOM_SEED` | | `--shuffle` | `SHUFFLE=yes` | -- cgit v1.2.3