After a quiet fall, January 2026 turned into Tenrankai’s biggest month — over ninety commits that took it from “my gallery server” to something that looks suspiciously like a product.
The viewer grew up
The image detail page became a React + Vite SPA: tile-based deep zoom with configurable pre-generation (big astro images pan like a map), a click-to-zoom loupe on desktop, pinch-to-zoom on mobile, filmstrip thumbnail navigation, preloading of adjacent images, and an image-centric redesign that keeps titles and descriptions out of the way. HDR quirks got their own fixes — including disabling CSS transitions on Mobile Safari because HDR tiles flickered through them.
Metadata became a system
A pluggable metadata storage layer landed: titles, descriptions, and technical overrides in human-editable markdown sidecars, plus picks, tags, and comments — including comments anchored to a selected region of the image. An OpenAI integration generates keywords and alt-text. An inline markdown editor lets you edit folder and image descriptions right in the gallery. And multi-file image support arrived: RAW files grouped with their JPEGs, version pickers, and hidden folders.
The foundations got pluggable
- Storage abstraction — galleries can live on the filesystem or S3.
- User storage abstraction — TOML files up through real databases.
- Multi-site virtual hosting with hot reload — one server, many sites, each with its own templates, galleries, and auth.
- The codebase split into a cargo workspace of focused crates.
And the trimmings
HEIC/HEIF support joined the HDR pipeline, PNG watermarking landed, ZIP downloads of galleries use the image capture dates for file timestamps (the kind of detail nobody asks for and everybody deserves), and an admin UI appeared for user and gallery management — followed a few days later by a theme editor.
Part 1 covered the ten-day birth; the annotated source of all of this is at github.com/theatrus/tenrankai.