Skip to content

feat: initial Peekache implementation#1

Open
tomasmach wants to merge 21 commits intomainfrom
feat/initial-implementation
Open

feat: initial Peekache implementation#1
tomasmach wants to merge 21 commits intomainfrom
feat/initial-implementation

Conversation

@tomasmach
Copy link
Copy Markdown
Owner

Summary

Full V1 implementation of Peekache — a Tauri desktop app for browsing, previewing, and managing cached media from Discord (and future data sources).

Backend (Rust):

  • DataSource trait with provider registry for extensible source support
  • Discord cache provider with auto-detection per OS
  • Custom directory provider for arbitrary paths
  • SQLite persistence with filtered/sorted/paginated queries
  • Cache engine with scan orchestration, thumbnail generation (image crate + ffmpeg sidecar), and file operations
  • 13 Tauri commands covering scan, browse, preview, save, export, delete, clipboard, and settings
  • 26 passing tests

Frontend (React + TypeScript + Tailwind):

  • Gallery with responsive thumbnail grid, infinite scroll, media type badges
  • Filter bar with type chips, source dropdown, sort options
  • Preview modal with full-size media, file info, keyboard navigation
  • Actions: Save, Export, Delete, Copy to Clipboard, Open in System Viewer, Show Original Location
  • Settings panel: source management, save directory, theme toggle, clear thumbnails, about
  • Scan summary toast notifications
  • Light/dark/system theme with CSS custom properties

Test plan

  • Run cargo test — 26 tests should pass
  • Run npx tsc --noEmit — 0 TypeScript errors
  • Run npm run tauri dev — app should launch
  • Verify Discord cache auto-detection on macOS/Linux/Windows
  • Scan and browse cached media in the gallery
  • Click thumbnails to preview, test Save/Export/Delete/Copy actions
  • Test filter chips and source dropdown
  • Toggle light/dark/system themes
  • Add/remove custom directory in Settings

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant