Commit Graph

205 Commits

Author SHA1 Message Date
kennethreitz ceb61c15b0 Add /health endpoint for fast health checks, fix cold start timeout
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 16:02:20 -04:00
kennethreitz 816c7e111b Add health check for blue-green deploys
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:53:11 -04:00
kennethreitz 11f1890fca Image embed: camera and lens names link to gear pages
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:47:36 -04:00
kennethreitz 2de886dcf5 Image embed: clicking photo links to detail page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:46:45 -04:00
kennethreitz dadb581689 Remove footer link from image detail embed
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:45:34 -04:00
kennethreitz b61acea86c Enable blue-green deploys
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:45:09 -04:00
kennethreitz 1ae4dc5518 Image embed: just photo + EXIF line, no title/description
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:44:03 -04:00
kennethreitz 8a9abdc341 Embed: start with 12 images, load more for rest
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:42:30 -04:00
kennethreitz e3f7562bbe Allow embed page in iframes (remove X-Frame-Options)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:28:47 -04:00
kennethreitz b4666fb8eb Fix embed to use bolt API correctly (no page param, use limit)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:23:49 -04:00
kennethreitz 2dac355b39 Interactive iframe embed: year pills, load more, EXIF overlays
oEmbed now returns an iframe pointing to /embed/ — full JS interactivity
like SoundCloud. Year filtering, lazy loading, load more button.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:19:21 -04:00
kennethreitz f0686ce799 Force center alignment on oEmbed footer link
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:17:26 -04:00
kennethreitz cddb882fff Fix oEmbed year pill fonts to sans-serif
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:15:36 -04:00
kennethreitz 763a85c6ce Fix oEmbed overlay font to sans-serif
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:14:00 -04:00
kennethreitz 8c7d87b4c5 Add year pills to homepage oEmbed (link to site with year filter)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:13:12 -04:00
kennethreitz 66a7410dc0 Revert overlay links — plain text, no clickable camera names
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:10:37 -04:00
kennethreitz 1e6109a101 EXIF overlays on oEmbed grid items, camera links on site overlays
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:08:35 -04:00
kennethreitz f9604266ac Revert overlay to original (camera + focal + aperture)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:06:48 -04:00
kennethreitz ba0ab1387f oEmbed: 44 photos (divisible by 4)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:03:34 -04:00
kennethreitz cb21b7cf3c oEmbed: increase max-width to 800px for bigger thumbnails
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:03:17 -04:00
kennethreitz e9acc1a642 Add lens + ISO to image overlay, fix oEmbed period
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:02:59 -04:00
kennethreitz 36b19c8a55 oEmbed: 4-column grid
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:01:58 -04:00
kennethreitz 58f12c8cfe oEmbed: 3-column grid for larger photos
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:00:32 -04:00
kennethreitz 54deaa3edb oEmbed: "See more at photos.kennethreitz.org"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:59:50 -04:00
kennethreitz 082b94cb07 oEmbed: 5x9 grid (45 photos)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:59:33 -04:00
kennethreitz 0d710c6971 oEmbed: 4x4 grid (16 photos), grey link color
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:59:10 -04:00
kennethreitz 3f9abec0be Limit oEmbed width to 500px, bottom link says photos.kennethreitz.org
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:56:38 -04:00
kennethreitz f235ed723e Add oEmbed for collections — grid of collection photos with title
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:48:42 -04:00
kennethreitz 2aae13f554 Add oEmbed endpoint for image and homepage embeds
- /oembed?url=... returns rich embed JSON
- Image URLs: photo + title + AI description + EXIF metadata
- Homepage URL: 4x3 grid of random photos with link
- Discovery links in <head> of image detail and homepage

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:47:30 -04:00
kennethreitz 0040c3a51c Remove login, dashboard, manage, upload — pure public read-only site
All content management via CLI (import_folder, ai_describe, cleanup).
No auth, no upload UI, no manage UI. Just photos.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:45:07 -04:00
kennethreitz b279f5f599 Use [[services]] with http_options for 50MB upload limit
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:38:32 -04:00
kennethreitz 590f55458a Add http_options.max_request_body_size 50MB to fly.toml
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:34:39 -04:00
kennethreitz 3feaec5bdd Increase Django upload limits to 50MB, AI describe in thread fallback
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:06:49 -04:00
kennethreitz 1914e89635 Remove Flickr import entirely, fix collection ownership
- Deleted import_flickr command, Flickr tasks, API endpoint, template, nav link
- Fixed all collections owned by testuser → kennethreitz

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 13:36:34 -04:00
kennethreitz 085420472c Hide image overlay text on mobile, tighten nav link spacing
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 13:28:09 -04:00
kennethreitz b99b1f42ac Fix EXIF bar mobile layout: tighter gaps, smaller text on small screens
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 13:24:29 -04:00
kennethreitz f1c26d4895 Add privacy rules: Jan 5 2019 photos set to private
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 09:23:03 -04:00
kennethreitz 1c3bdc748f Suppress httpx request logs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 09:11:50 -04:00
kennethreitz 5656678f54 Suppress urllib3 connection pool warnings, botocore debug noise
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 09:10:39 -04:00
kennethreitz b6ccb72536 SEO: years in sitemap, AI titles as alt text on grid thumbnails
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:45:34 -04:00
kennethreitz d80d994ebf SEO: add meta keywords from tags + camera + lens on image pages
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:44:51 -04:00
kennethreitz ba20997e1b SEO: include camera name in image detail page title
e.g. "Golden Hour | Leica M Monochrom — Kenneth Reitz"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:44:32 -04:00
kennethreitz a38306c663 Auto-skip only checks filenames, hash dedup stays in import loop
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:41:06 -04:00
kennethreitz 69cbb47a06 Fix auto-skip: normalize filenames (spaces/underscores), preload hashes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:37:29 -04:00
kennethreitz 2e7a88f125 Smarter auto-skip: match by filename first, hash only for ambiguous files
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:29:00 -04:00
kennethreitz 9220e9d6f8 Dedupe transfers collections, tags, city, AI metadata before deleting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:21:01 -04:00
kennethreitz 4ba8e0c753 Add structured stdout logging
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:14:54 -04:00
kennethreitz 1581a7eae6 Add Years browsing: /years/ list and /years/<year>/ detail with infinite scroll
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:06:52 -04:00
kennethreitz 77fb1d6434 Empty favicon/apple-touch-icon responses, clean European city names
Renamed: Gemeente Amsterdam → Amsterdam, Warszawa → Warsaw,
Dublin City → Dublin, etc. Merged 3 Istanbul suburbs into one.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:02:39 -04:00
kennethreitz 292f4a173c Add interactive map to /cities/ page with all geotagged locations
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 07:54:22 -04:00