Skip to content

Latest commit

 

History

History
225 lines (178 loc) · 7.95 KB

File metadata and controls

225 lines (178 loc) · 7.95 KB

oCIS Photo Add-on - Backlog

Last Updated: January 18, 2026


Priority Legend

  • 🔴 High - Core functionality or UX issues
  • 🟡 Medium - Nice to have improvements
  • 🟢 Low - Future considerations

🚨 Critical Bugs

🟡 BUG: Intermittent First Load Failure

  • First load sometimes fails with "Failed to search photos" error
  • Second load/refresh works fine
  • Suspected race condition or initialization timing issue
  • May be related to oCIS service startup, authentication, or space discovery
  • Repro: Hard refresh the page, sometimes first load fails
  • Workaround: Refresh the page again

🔴 BUG: HEIC Images Not Supported (Backend)

  • Add HEIC/HEIF image format support to oCIS
  • HEIC files (Apple's default photo format since iOS 11) do not display in oCIS
  • Neither thumbnails nor full images load - broken in both photo-addon AND core oCIS file browser
  • Example file: IMG_20251013_174320.heic
  • Impact: iPhone photos saved in HEIC format are completely unusable
  • Requires: Backend changes - likely needs HEIC codec/decoder in thumbnail service
  • Possible solutions:
    • Add libheif support to oCIS thumbnail generation
    • Server-side conversion to JPEG on upload
    • Browser-side HEIC decoding (heic2any.js) as fallback

Upstream Contribution Status

🔴 Backend PR #11912 - Photo EXIF Metadata Search

  • PR submitted: owncloud/ocis#11912
  • Initial review received from @kobergj (Jan 16, 2026)
  • Linter fix applied (commit 7500db70)
  • Replied to maintainer's question about map lookup logic
  • SonarCloud cognitive complexity fix (commit 9404bb14)
  • PENDING: Await final approval and merge
  • Branch: feature/photo-metadata-search
  • Changes: Bleve index photo fields, KQL query support, WebDAV properties

🟡 Web Extensions Contribution

  • Draft proposal created for owncloud/web-extensions repo
  • Submitted issue to web-extensions repo proposing photo-addon and advanced-search
  • Received positive response from maintainer - "this is awesome, please go ahead!"
  • Wait for maintainer feedback on clarifying questions
  • Fork and restructure to web-app-photos and web-app-advanced-search
  • Update license from Apache-2.0 to AGPL-3.0
  • Submit PRs after backend PR merges

🔴 Deployment Example Updates (Requested by Maintainer)

  • Update ocis_full deployment example after web-extensions PR accepted
  • Add .env entry: #PHOTOADDON=:web_extensions/photoaddon.yml
  • Create web_extensions/photoaddon.yml with init container config
  • Add CSP configuration for Leaflet.js CDN and OpenStreetMap tiles
  • Test deployment with Docker Compose
  • Reference: https://github.com/owncloud/ocis/blob/master/deployments/examples/ocis_full/

Phase 2: UI/UX Improvements

✅ Lightbox Date Display Cleanup (Complete)

  • Replace "Date Source: photo.takenDateTime" with simpler "Date Taken" label
  • Add small indicator badge beside date: "(EXIF)" (green) or "(Mod time)" (gray)
  • Cleaner, less technical presentation for end users

Phase 2: Stack & Grouping Logic

🟡 Stack Cover Selection

  • Integrate with PhotoPrism image quality scoring
  • Use highest quality image as stack "face"
  • Fallback to most recent if no quality data

Phase 3: Photo Actions & Context Menu

🟡 Share Button

  • Quick share button in lightbox view
  • Copy link to clipboard
  • Share via oCIS sharing dialog

🟡 Tagging in Lightbox

  • View existing tags in popup
  • Add new tags directly
  • Remove tags
  • Tag autocomplete from existing tags

Phase 4: Map View

✅ Map Integration (Complete)

  • Map view UI with Leaflet.js + OpenStreetMap
  • Cluster markers for nearby photos
  • Click marker to open photo in lightbox
  • Click cluster to zoom in
  • GPS coordinates returned by backend
  • Map tile gap CSS fix
  • "View on Map" from individual photo
  • Search for all files within visible map bounds (future enhancement)

Phase 5: PhotoPrism Integration

🟢 Face Recognition

  • Connect to PhotoPrism API for face detection
  • Inject person tags into oCIS metadata
  • Face-based photo grouping/filtering
  • "People" view showing faces with photo counts

🟢 AI Quality Scoring

  • Retrieve image quality scores from PhotoPrism
  • Use for stack cover selection
  • Filter/sort by quality

Implementation Notes

  • Requires PhotoPrism instance running alongside oCIS
  • Need to map PhotoPrism library to oCIS file paths
  • Consider webhook for automatic processing of new uploads

Phase 6: Additional Features

🟢 Albums & Collections

  • Create named albums
  • Add photos to albums (without moving files)
  • Album sharing
  • Smart albums (auto-populated by criteria)

🟢 Slideshow Mode

  • Full-screen slideshow
  • Configurable timing
  • Transition effects
  • Background music support (?)

Phase 7: Mobile Development

🟢 Mobile App Investigation

  • Research Flutter vs React Native vs PWA
  • Evaluate oCIS mobile SDK availability
  • Consider PWA approach first (lower effort)
  • Native app for iOS/Android if PWA insufficient

Mobile-Specific Features

  • Offline photo viewing (cached)
  • Auto-upload from camera roll
  • Background sync

Technical Debt

  • Add unit tests for new components (48 tests in usePhotos.spec.ts)
  • Add E2E tests framework (Playwright) with tests for gallery, lightbox, map view
  • Performance optimization for large libraries (10k+ photos)
  • Accessibility audit (keyboard navigation, screen readers)
  • i18n/localization support (useI18n composable with EN, DE, FR translations)
  • Code complexity audit - Refactored and simplified code
    • Consolidated types into types/index.ts
    • Cleaned up usePhotos.ts - removed debug logging, extracted utility functions
    • Updated components to use centralized i18n

Completed ✅

Backend (oCIS Fork)

  • Photo metadata in Bleve search index with Store=true
  • KQL photo field queries (cameraMake, cameraModel, takenDateTime, etc.)
  • WebDAV oc:photo-* properties in search results
  • GPS coordinates exposed in WebDAV search results
  • PR #11912 submitted to upstream
  • Linter fix (commit 7500db70) - moved comment for formatting
  • Cognitive complexity refactor (commit 9404bb14) - extracted appendPhotoProps/appendLocationProps
  • Thumbnail cropping fix (aspect ratio preserved)

Frontend (Photo-Addon)

  • Basic photo grid view
  • Date grouping by EXIF capture date
  • Infinite scroll (backwards in time)
  • Lightbox viewer with EXIF panel
  • Camera info display (make, model, aperture, ISO, etc.)
  • GPS coordinates with "View on Map" link
  • WebDAV Search API integration (replaced folder traversal)
  • Date-filtered search queries (3-month initial load)
  • EXIF toggle respects search query mode
  • Stack view: Arrow positioning fixed
  • Stack view: Swipe gesture navigation
  • Stack view: Touch responsiveness improvements
  • UI cleanup: Removed EXIF indicator icon
  • UI cleanup: Removed MDATE indicator icon
  • Lightbox: Display photo folder path
  • Context menu: Download, Open in Files, Copy Link, Delete
  • Map view: Full implementation with Leaflet.js
  • Map view: Tile gap CSS fix
  • Header bar z-index fix
  • "Open in Files" link in lightbox
  • Pinch-to-zoom calendar groupings (Day/Week/Month/Year views)
  • GPS-based stack merging (location + time grouping)
  • Lightbox: Simplified date display with EXIF/Upload source badge

Performance Optimizations (Jan 2026)

  • Reduced thumbnail data transfer by 95% (25.8MB → 1.4MB)
  • Improved search response time by 83% (4s → 126ms)
  • Decreased total XHR data by 93%
  • Initial load now fetches 3 months instead of all 5,000+ photos

Community

  • Web-extensions proposal submitted to owncloud/web-extensions