summaryrefslogtreecommitdiff
path: root/README.md
AgeCommit message (Collapse)Author
2026-06-17Add configurable SOURCE_URL footer link; release 0.9.00.9.0Paul Buetow
The footer "Site generated ... with <link>" was hardcoded to the shuriken.sh repository. Make it configurable via the SOURCE_URL config variable and the --source-url CLI flag (defaulting to the shuriken.sh repo, so existing sites are unchanged). The footer derives the displayed text from the URL by stripping its scheme. Plumbed through apply_config_defaults, CLI override targets/spec, --print-config, the verbose effective-config log, and the header template's new render_source_url_html (config_html) render var. Documented in shuriken.default.conf and README; added a generation test asserting a custom SOURCE_URL replaces the default footer link, and updated the print-config and header render-var-subset expectations. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17ln0 make --clean remove leftover staging directoriesPaul Buetow
The --clean action deleted DIST_DIR but left behind the staging/backup directories the generation pipeline creates as siblings of DIST_DIR (.shuriken.<basename>.staging.* / .backup.*). Users expect --clean to remove all generation output, so extend it to also delete those. Cleanup runs after the validate_clean_dist_dir safety guard (8n0), so a dangerous DIST_DIR still aborts before any deletion. It only matches shuriken's own basename-specific staging/backup prefixes (the exact mktemp templates from config.staging.source.sh), uses nullglob so a missing match never expands to a literal pattern, and only removes directories. Unrelated dotfiles in the parent are never touched. Update test_clean to assert the staging/backup dirs are removed while unrelated entries survive, and document the behavior in the CLI usage text and README. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17an0 reject scalar SYNC_DESTINATIONS instead of word-splitting itPaul Buetow
A scalar SYNC_DESTINATIONS containing spaces was word-split by the shared resolve_config_array helper, breaking a single destination into multiple broken arguments passed to rsync. A list of rsync destinations is inherently a list, and array syntax is the only spelling that preserves embedded spaces. resolve_sync_destinations now detects a scalar declaration via declare -p and fails with a clear config_error telling the user to use array syntax. The array path is unchanged, and resolve_config_array's scalar word-splitting is left intact for TAR_OPTS (where turning "-c -v" into separate options is desired). Adds focused tests proving the scalar case errors without invoking rsync and the array case preserves a space-containing destination as one argument. Updates src/shuriken.default.conf and README.md to document the requirement. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15Make the favicon configurable via FAVICON config / --favicon flagPaul Buetow
The generated pages link a favicon.ico that was always the bundled shuriken favicon (copy_site_favicon hard-copied share/shuriken/assets/favicon.ico). Add a FAVICON config variable and a --favicon PATH CLI flag: when set, that file is published as favicon.ico instead of the bundled default; when empty, the bundled favicon is used as before. Plumbed through apply_config_defaults, CLI_OPTION_SPEC + override allowlist, usage, print_config, the action config list and effective-setting log, and validated (a non-empty FAVICON must be a readable file) before generation. shuriken.default.conf and the README document it; a test covers a custom favicon, its appearance in --print-config, and rejection of a missing file. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15Move the stats site into a stats/ subdir to keep the album root smallPaul Buetow
The filter mini-albums put thousands of HTML files directly in the album root. Reorganise so only the main album lives in DIST_DIR and all stats content goes under stats/: stats/index.html - the stats overview (was stats.html) stats/<pagebase>/index.html - each filter gallery (was <pagebase>.html) stats/<pagebase>/<index>.html - each filter view page (was <pagebase>--N.html) Each mini-album is its own directory, so no single directory holds more than one filter's pages. Links updated accordingly: the overview links to <pagebase>/, the gallery thumbnails link to sibling <index>.html, view prev/next/gallery are same-dir, and assets/album-details/back-to-stats resolve via the ../.. backhref. The header Stats link and camera.tmpl back link point at stats/index.html. Mini-albums still reuse the shared photos/thumbs/blurs assets and render in parallel. Tests and the dry-run plan updated for the new layout; README documents the stats/ subdirectory structure. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15docs: document the volatile ./cache EXIF directoryPaul Buetow
Explain in the README that the per-photo EXIF identify cache now lives in a volatile cache/ directory parallel to dist/: it is never deployed (--sync only publishes DIST_DIR), persists across runs (and across a removed/rebuilt dist) to skip the slow identify on unchanged photos, is left in place by --clean, and is cleared once by --force. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14rm0 wire stats feature into generate with STATS_PAGE togglePaul Buetow
Final integration of the stats-site feature: - Add STATS_PAGE config (default yes) mirroring SPLASH_PAGE through every layer: shuriken.default.conf, apply_config_defaults, CLI_OPTION_SPEC (--stats/--no-stats), the CLI_CONFIG_OVERRIDE_TARGETS allowlist (without which the flag was silently ignored), usage text, yes/no validation, print_config, the action config list + effective-setting log, the generation metadata, and the dry-run plan. - generate() now calls a gated generate_stats_pages helper after the album pages (and before archiving, so the stats/camera pages are tarballed): collect_photo_exif_stats + render_stats_page . . + render_camera_pages . . - Emit "stats_page" in shuriken.json next to "splash_page". - Gate the header Stats nav link behind STATS_PAGE via a new render_stats_page_html config_html field, so it is hidden (no 404) when stats are disabled. - Document STATS_PAGE and --stats/--no-stats in the README. - Tests: full --generate produces stats.html + camera-<slug>.html + the nav link and stats_page=true; --no-stats suppresses all three and sets stats_page=false; print-config and metadata expectations updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14mm0 shrink README logo to width 160Paul Buetow
The logo was embedded as a plain Markdown image, so renderers displayed the 256x256 SVG at full/container size, dominating the top of the page. Use an HTML <img> with width="160" (GitHub honors it) so the logo is a modest header graphic instead of taking up the whole screen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12not minimal anymorePaul Buetow
2026-06-11Rename photoalbum to shurikenPaul Buetow
2026-06-11Add shuriken logo and generated faviconPaul Buetow
2026-06-11Parallelize template rendering jobsPaul Buetow
2026-06-06Cache EXIF details between generationsPaul Buetow
2026-06-05Add rsync sync commandPaul Buetow
2026-06-05Add timeouts for generation toolsPaul Buetow
2026-06-05Add fast splash refresh actionPaul Buetow
2026-06-05Retire Makefile and parallelize image processingPaul Buetow
2026-06-05Add splash page support for task 8j0Paul Buetow
2026-06-04Enforce photoalbum generated script drift check (5j0)Paul Buetow
2026-06-04qi0 add just install workflowPaul Buetow
2026-06-03Add deterministic generation mode for task 3j0Paul Buetow
2026-06-03Resolve default template directory fallback for 1j0Paul Buetow
2026-06-03Add print-config mode for task 0j0Paul Buetow
2026-06-03Add output verbosity controls for zi0Paul Buetow
2026-06-03Add dry-run mode for photoalbum generation (wi0)Paul Buetow
2026-06-03Filter incoming image files for task 2j0Paul Buetow
2026-06-03Add generation metadata for task 4j0Paul Buetow
2026-06-03ni0: update CLI and config documentationPaul Buetow
2026-06-02Add CLI config overrides for mi0Paul Buetow
2026-06-02Implement explicit config CLI behavior for li0Paul Buetow
2026-06-02ki0: switch photoalbum CLI to long optionsPaul Buetow
2026-05-30Refactor photoalbum bash scriptPaul Buetow
2022-03-05remove sample pagePaul Buetow
2022-02-21add installation instructions and HTML templates to the readmePaul Buetow
2022-02-21convert readme text file to mdPaul Buetow