levineuwirth.org/tools
Levi Neuwirth 3e76833aac Validate tool inputs and surface tracebacks on errors
- import-photo.sh: validate \$SLUG against ^[a-z0-9-]+\$ before
  writing under content/photography/; rejects '../' and other
  surprises early. Also fail loudly with a clear message if either
  'magick' resize or 'magick mogrify -strip' returns non-zero
  (prevents shipping a file that still carries EXIF when the strip
  silently failed).
- compress-assets.sh: reject non-numeric MIN_SIZE up front (otherwise
  the comparison fails later with a cryptic arithmetic error).
- extract-dimensions.py / extract-exif.py / extract-palette.py:
  add traceback.print_exc() after the broad except so a corrupt
  image produces a stack trace alongside the one-line summary.
- extract-exif.py: switch from Pillow's deprecated _getexif() to
  the public getexif() API; pyproject allows Pillow up to 12 where
  _getexif may be removed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 15:09:02 -04:00
..
add-popup-source.sh major visual changes - dingbats, footer, etc 2026-04-17 12:48:22 -04:00
compress-assets.sh Validate tool inputs and surface tracebacks on errors 2026-05-07 15:09:02 -04:00
convert-images.sh Spec dilemma 2026-05-01 21:22:01 -04:00
download-leaflet.sh Spec dilemma 2026-05-01 21:22:01 -04:00
download-model.sh audit: tooling, deploy ordering, README, repo hygiene 2026-04-10 17:41:33 -04:00
download-pdfjs.sh PDF compression 2026-04-22 12:40:22 -04:00
embed.py Pin Hugging Face model revisions for downloader and embed pipeline 2026-05-07 15:08:14 -04:00
extract-dimensions.py Validate tool inputs and surface tracebacks on errors 2026-05-07 15:09:02 -04:00
extract-exif.py Validate tool inputs and surface tracebacks on errors 2026-05-07 15:09:02 -04:00
extract-palette.py Validate tool inputs and surface tracebacks on errors 2026-05-07 15:09:02 -04:00
import-photo.sh Validate tool inputs and surface tracebacks on errors 2026-05-07 15:09:02 -04:00
import-poetry.py audit: tooling, deploy ordering, README, repo hygiene 2026-04-10 17:41:33 -04:00
leaflet-checksums.sha256 Spec dilemma 2026-05-01 21:22:01 -04:00
model-checksums.sha256 Pin Hugging Face model revisions for downloader and embed pipeline 2026-05-07 15:08:14 -04:00
pdfjs-checksums.sha256 Fix broken PDF hyperlinks 2026-04-22 12:10:31 -04:00
preset-signing-passphrase.sh GPG signing, embedding pipeline, visualization filter, search timing, sig popups 2026-03-20 20:14:49 -04:00
refreeze.sh affiliation, cabal helper script 2026-03-26 08:14:50 -04:00
sign-site.sh States/Context/Embeddings fixes 2026-04-26 11:22:57 -04:00
subset-fonts.sh initial deploy! whoop 2026-03-17 21:56:14 -04:00
viz_theme.py GPG signing, embedding pipeline, visualization filter, search timing, sig popups 2026-03-20 20:14:49 -04:00