You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This task tracks an ongoing systems cleanup pass I'm doing to go in and cleanup, fix, and add miscellaneous improvements to various TagStudio systems.
Over time much of the codebase has become out of alignment with its intended functionality and implementations - especially on the UI side. Anti-patterns have arisen to enforce early practices of mine that were never intended to be canonized, some systems have become neglected or bloated since being introduced, and some systems have fallen into complete disrepair.
I feel that it's very important that I myself take a look at these systems and set them back into alignment to what they should be and how they should operate, not only to fix and improve them for their sake but also to set a proper baseline for how these systems should function. Code should not be built on top of rough systems I added in the initial commit 2 years ago, nor on top of systems that have long outgrown their original purposes or have become a stack of band-aid fixes addressing problems that may not even be relevant anymore.
I'll be working on these at a steady pace over time, but not exclusively. I'll still be giving attention to new features and the ongoing core library changes in addition to what's listed here.
Ordered Tasks
0. UI MVC Refactor
Necessary to complete first, as the rest of the ordered tasks touch the UI code which is either currently fragmented or using the older MVC pattern.
Try to use Qt paint event to draw constant sized rounded masks for images in the preview panel, relative to the screen instead of the size of the image (e.g. a 12px corner radius will stay 12px when resizing the preview)
3. Cache Manager
Expand to support caching of large file previews such as RAW images and PDFs (see roadmap item)
Support audio waveform caching by storing computed data in text files (see roadmap item)
Possibly start using SQLite to store thumbnail locations, as this system is finally expanding beyond its current use
4. Resource Manager
Allow for arbitrary conversion between formats such as PIL images and QPixmaps
Ensure correct return types for resources
Move text file resources such as the ts_ignore template to the resource manager
Move last of the Qt resources not using this system to here (i.e. thumbnail badges)
5. Theming System
Complete theming overhaul, using Qt paint events instead of stylesheets or default fusion widgets.
Establish and enforce Unicode normalization practices for TagStudio libraries
Filenames should be compared against each other normalized forms between the TagStudio database and on-disk files. Form D seems to be the best contender, despite NTFS drives using Form C. This would ensure accurate comparisons in libraries that contain files added across different filesystems, as well as protect against edge cases in future multi-root libraries that could span across different filesystems in a single library simultaneously.
Rebuild the duplicate file detection system to use a generic base that can have additional tools supported on top of it, such as dupeGuru, Czkawka, or even in-house solutions.
Checklist
Description
This task tracks an ongoing systems cleanup pass I'm doing to go in and cleanup, fix, and add miscellaneous improvements to various TagStudio systems.
Over time much of the codebase has become out of alignment with its intended functionality and implementations - especially on the UI side. Anti-patterns have arisen to enforce early practices of mine that were never intended to be canonized, some systems have become neglected or bloated since being introduced, and some systems have fallen into complete disrepair.
I feel that it's very important that I myself take a look at these systems and set them back into alignment to what they should be and how they should operate, not only to fix and improve them for their sake but also to set a proper baseline for how these systems should function. Code should not be built on top of rough systems I added in the initial commit 2 years ago, nor on top of systems that have long outgrown their original purposes or have become a stack of band-aid fixes addressing problems that may not even be relevant anymore.
I'll be working on these at a steady pace over time, but not exclusively. I'll still be giving attention to new features and the ongoing core library changes in addition to what's listed here.
Ordered Tasks
.pxdthumbnails. #1430 (comment))Any Order