How nathanatgit/shalielie works
Photographic Style Port patches compatible iPhone HEIC files so Apple Photos exposes Photographic Styles and Texture/Grain controls. Its main workflow accepts a photo, selects a donor profile, inspects and edits the HEIF item graph and metadata, then returns a patched file. The CLI is the reference implementation; the browser app performs the port locally, with optional image decoding for photo-specific tuning. The README also documents native-photo Texture/Grain handling and CLI inspection, profile listing, and donor extraction. The Python implementation is a single script; browser wiring is based on sampled imports and calls, while CLI internals are only partially sampled.
Main entry points: app.js Web interface · port.js Port orchestration · photographic_style_port.py CLI commands · decode.js Image decoder
Components 19
Command-line tool
- CLI commands
photographic_style_port.py
Browser app
- Web interface
web/app.js - Image decoder
web/src/decode.js
HEIC processing
- Port orchestration
web/src/port.js - HEIF graph surgery
web/src/heif.js - Box parsing
web/src/box.js - Texture metadata
web/src/texture.js - Style metadata
web/src/styles.js - EXIF handling
web/src/exif.js
Donor profiles
- Profile index
web/profiles/index.json - Profile loader
web/src/zip.js - Donor profiles
web/profiles/45-15.zip
Other components
- CLI user
- Input HEIC
- Browser user
- Selected photo
- Patched HEIC
- libheif decoder
- Encoder tools
Connections 19
- CLI user → CLI commands: runs command
- Input HEIC → CLI commands: reads file
- CLI commands → Patched HEIC: writes result
- CLI commands → Encoder tools: decodes and encodes
- Browser user → Web interface: opens app
- Selected photo → Web interface: selects photo
- Web interface → Profile index: fetches index
- Web interface → Profile loader: loads profile
- Profile loader → Donor profiles: reads archive
- Web interface → Image decoder: requests analysis
- Image decoder → libheif decoder: loads decoder
- Web interface → Port orchestration: patches photo
- Port orchestration → HEIF graph surgery: parses and edits
- HEIF graph surgery → Box parsing: uses box operations
- Port orchestration → Texture metadata: adds texture items
- Port orchestration → Style metadata: updates style data
- Port orchestration → EXIF handling: handles EXIF data
- Port orchestration → Patched HEIC: returns patched bytes
- Web interface → Patched HEIC: offers download or share