This document outlines upcoming features, improvements, and bug fixes for SnapSort, organized by priority for efficient tracking and development.
- Adding Human Feedback Loop to club same faces that are recognized as different
A complete different window which contains all the faces and human can select the faces that are same.
- Display related images with shared faces
When an image is selected, show all other images where the same people (faces) also appear together.
Hint: Use the existing face-image mapping in the database to retrieve relevant results.
- Create installers for Windows, Linux, and macOS
UsePyInstallerorBriefcaseto package the application for each platform.
Hint: Ensure all dependencies are included in the installer.
-
The images are not retrieved from DB but from a list that is in-memory.
- This is a temporary solution. The images should be retrieved from the database to ensure persistence and reliability.
-
Prevent reprocessing of already indexed images
- Before processing, check if the image has already been analyzed using SQLite index.
-
Improve recognition accuracy and speed
- Replace or upgrade current face recognition model.
- Consider GPU-accelerated libraries such as:
insightfaceonnxruntimeface_recognitionwith CUDA
-
Handle image orientation variations
- Detect and adjust for rotated or flipped faces during processing.
-
Fix grid layout bug on image load
- Images currently render in a single column until the window is resized.
- Manually trigger layout/UI updates after thumbnails are inserted.
-
Prevent crash on "Go Back to Gallery"
- Handle navigation cleanup correctly to avoid panel memory issues or thread errors.
-
Improve overall GUI layout
- Consistent spacing, padding, and transitions.
- Polished visual hierarchy for thumbnail views, detail panels, and navigation.
-
Add image interaction options
- Right-click or hover options for:
- Delete image
- Reprocess face data
- Rename or tag
- Mark as favorite
- Right-click or hover options for:
-
Add loading/progress indicators
- Show when thumbnails or face data are being generated in the background.
-
Enable image zoom/preview
- Click on image to view full-screen or high-res version.
-
Toast notifications or status bar
- For background events like face matching, DB updates, or errors.
-
Allow naming of recognized individuals
- Associate a human-readable name with each face ID via GUI input.
-
Add search functionality
- Allow searching images by person name or face ID.
-
Show face match confidence score
- Display the similarity score on hover or click for each matched face.
-
Add pagination or lazy-loading for large datasets
- Prevent UI freezes and optimize memory usage.
- Add GitHub Action to build & deploy desktop app
- Use PyInstaller or Briefcase to package as a desktop app.
- Auto-generate platform-specific installers (Windows, Linux, macOS).
- Set up GitHub CI workflow for releases.
-
Refactor to modular or MVC architecture
- Improve separation between GUI, logic, and data layers.
-
Add type hints and docstrings
- Improve readability and help with static analysis.
-
Add configuration file
- Use
config.json,.env, or.inifor user-configurable settings:- Paths
- Face match threshold
- Cache size
- Use
-
Add unit and integration tests
- Focus on face recognition logic, database integrity, and UI navigation.
-
Set up GitHub Actions for code quality
- Run
flake8,black, andpytestautomatically on push.
- Run
-
Maintain dependencies and requirements
- Keep
requirements.txtorpyproject.tomlup to date.
- Keep
-
Deploy to mobile (Android/iOS)
- Consider using Kivy, BeeWare, or React Native with embedded face models.
-
Cloud sync support
- Optional: Sync metadata or processed DB to a cloud backend for portability.