Skip to content

[Task]: Systems Cleanup & Improvement Pass #1460

Description

@CyanVoxel

Checklist

  • I am using an up-to-date version.
  • I have read the documentation.
  • I have searched existing issues.

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

  • 0. UI MVC Refactor
  • 1. Media Type System
    • Create different mechanisms for file categories that are used for different purposes, such as searching vs. rendering (see comment: feat: render .pxd thumbnails. #1430 (comment))
    • Create translated media type categories for improved searching capabilities
    • Focus on the usability of this system - do not over-complicate it but still provide the expanded functionality outlined above
  • 2. Thumbnail/Preview Renderer
    • Split into separate classes and files for each renderer type (would replace refactor: thumbnail renderers #1217)
    • Offload decorative frame rendering and possibly default file icons to Qt instead of using PIL
    • Have previews and thumbnails use alpha channel for backgrounds to support differing window background colors (progress towards [Feature Request]: Follow Wallpaper Tinting and/or Blur on macOS #671)
    • Respect current color scheme
    • 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

Any Order

Metadata

Metadata

Assignees

Labels

TagStudio: LibraryRelating to the TagStudio library systemType: File SystemFile system interactionsType: FixA fix for a bug, typo, or other issueType: QoLA quality of life (QoL) enhancement or suggestionType: RefactorCode that needs to be restructured or cleaned upType: UI/UXUser interface and/or user experience

Type

Projects

Status
🚧 In progress

Relationships

None yet

Development

No branches or pull requests

Issue actions