# Phase 3: Images - Context

**Gathered:** 2026-01-29
**Status:** Ready for planning

<domain>
## Phase Boundary

Users can attach, view, and manage images on entries from any device. Supports file upload on desktop and camera capture on mobile. Images are stored on filesystem (not database). Tagging, search, and organization of images are separate phases.

</domain>

<decisions>
## Implementation Decisions

### Upload experience
- Button + drag-drop: Button for mobile, drag-drop zone for desktop
- One image at a time (no multi-select)
- Upload button in quick capture bar AND expanded entry view
- Optimistic display: Show image immediately, upload in background

### Image display
- Small thumbnail visible in collapsed entry view
- Horizontal scroll for multiple images when entry is expanded
- Fullscreen lightbox when user taps/clicks an image
- Edit mode toggle to access delete options (not always-visible X buttons)

### Camera capture
- Direct camera access via browser API (not just file picker)
- Separate buttons for camera and file upload — clear distinction
- Preview + confirm flow after taking photo (can retake)
- Show camera button on desktop too if webcam available

### Storage & sizing
- Keep original images (no resize/compression on upload)
- No file size limit (self-hosted, user controls their storage)
- Accept any image format browsers can display
- Generate thumbnails on upload for faster list loading

### Claude's Discretion
- Thumbnail dimensions and quality
- Lightbox library choice or custom implementation
- Camera API fallback behavior
- Drag-drop visual feedback design
- Error handling for failed uploads

</decisions>

<specifics>
## Specific Ideas

- Optimistic UI is important — image should appear instantly, not wait for upload
- Camera experience should feel native on mobile, not like a web hack
- Edit mode for delete keeps the UI clean (no clutter of X buttons everywhere)

</specifics>

<deferred>
## Deferred Ideas

None — discussion stayed within phase scope

</deferred>

---

*Phase: 03-images*
*Context gathered: 2026-01-29*
