By: Michael Lynch <git@mtlynch.io>
Add owner photo uploads Owners can upload a JPEG from a new /upload page. The photo is sanitized (metadata stripped via re-encode), resized, and thumbnailed, then stored to the configured media backend, and the owner is redirected to its media page. This adds the shared foundation for owner-only actions: - ReadUserByID, AuthService.UserID, and the currentUser helper - requireOwner middleware and an owner-only /upload subrouter - pageData.IsOwner, threaded through every page, plus a navbar Upload button Animated GIF and video uploads are not yet supported and are rejected with a clear message; they arrive in later slices. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>