Releases: TagStudioDev/TagStudio
Alpha 9.5.0 Pre-Release 1
Welcome to TagStudio v9.5! This update has been several months in the making, and has focused largely on internal changes that completely rework the library system to run on SQLite instead of a homebrew JSON solution. This key change has allowed us to dramatically improve the search engine, reduce memory usage for large libraries, and provide a stable framework for several new additions - both in this release and in future releases moving forward! Despite this being a largely backend-focused update, there's still some exciting new features and changes that should make your tagging experiences better than ever! Thank you so much to everyone who's helped make this happen!
- Travis (CyanVoxel)
Added
Overhauled Search Engine
Boolean Operators
- feat: implement query language by @Computerdores in #606
- feat: optimize AND queries by @Computerdores in #679
Filetype, Mediatype, and Glob Path Searches
- fix: remove wildcard requirement for tags by @Tyrannicodin in #481
- feat: add filetype and mediatype searches by @python357-1 in #575
- feat: make path search use globs by @python357-1 in #582
- feat: implement search equivalence of "jpg" and "jpeg" filetypes by @Computerdores in #649
Sortable Results
- feat: sort by "date added" in library by @Computerdores in #674
Autocomplete
- feat: add autocomplete for search engine by @python357-1 in #586
Replaced "Tag Fields" with Tag Categories
Instead of tags needing to be added to a tag field type such as "Meta Tags", "Content Tags", or just the "Tags" field, tags are now added directly to file entries with no intermediary step. While tag field types offered a way to further organize tags, it was cumbersome, inflexible, and simply not fully fleshed out. Tag Categories offer all of the previous (intentional) functionality while greatly increasing the ease of use and customization.
-
feat!: tag categories by @CyanVoxel in #655
Thumbnails and File Previews
New Thumbnail Support
- feat: add svg thumbnail support (port #442) by @Tyrannicodin and @CyanVoxel in #540
- feat: add pdf thumbnail support (port #378) by @Heiholf and @CyanVoxel in #543
- feat: add ePub thumbnail support (port #387) by @Heiholf and @CyanVoxel in #539
- feat: add OpenDocument thumbnail support (port #366) by @Joshua-Beatty and @CyanVoxel in #545
- feat: add JXL thumbnail and animated APNG + WEBP support (port #344 and partially port #357) by @BPplays and @CyanVoxel in #549
- fix: catch ImportError for pillow_jxl module by @CyanVoxel in a2f9685
Audio Playback
Thumbnail Caching
- feat(ui): add thumbnail caching by @CyanVoxel in #694
Tags
Delete Tags (Finally!)
- feat: remove and create tags from tag database panel by @DandyDev01 in #569
New Tag Colors + UI
- feat: expanded tag color system by @CyanVoxel in #709
- fix(ui): use correct pink tag color by @CyanVoxel in 431efe4
- fix(ui): use consistent tag outline colors by @CyanVoxel in 020a73d
New Tag Alias UI
- fix: preview panel aliases not staying up to date with database by @DandyDev01 in #641
- fix: subtags/parent tags & aliases update the UI for building a tag by @DandyDev01 in #534
Miscellaneous
- feat: about section by @mashed5894 in #712
- feat(ui): add configurable splash screens by @CyanVoxel in #703
- feat(ui): show filenames in thumbnail grid by @CyanVoxel in #633
Fixed
- fix(ui): display all tags in panel during empty search by @samuellieberman in #328
- fix: avoid
KeyError
inadd_folders_to_tree()
(fix #346) by @CyanVoxel in #347 - fix: error on closing library by @yedpodtrzitko in #484
- fix: resolution info #550 by @Roc25 in #551
- fix: remove queued thumnail jobs when closing library by @yedpodtrzitko in #583
- fix: use absolute ffprobe path on macos (Fix #511) by @CyanVoxel in #629
- fix(ui): prevent duplicate parent tags in UI by @SkeleyM in #665
- fix: fix -o flag not working if path has whitespace around it by @python357-1 in #670
- fix: better file opening compatibility with non-ascii filenames by @SkeleyM in #667
- fix: restore environment before launching external programs by @mashed5894 in #707
- fix: have pydub use known ffmpeg + ffprobe locations by @CyanVoxel in #724
- fix: add ".DS_Store" to
GLOBAL_IGNORE_SET
by @CyanVoxel in b72a2f2 - fix: don't add "._" files to libraries by @CyanVoxel in eb1f634
Changed
SQLite Save File Format
This was the main focus of this update, and where the majority of development time and resources have been spent since v9.4. These changes include everything that was done to migrate from the JSON format to SQLite starting from the initial SQLite PR, while re-implementing every feature from v9.4 as the initial SQLite PR was based on v9.3.x at the time.
- refactor!: use SQLite and SQLAlchemy for database backend by @yedpodtrzitko in #332
- feat: make search results more ergonomic by @yedpodtrzitko in #498
- feat: store
Entry
suffix separately by @yedpodtrzitko in #503 - feat: port thumbnail (#390) and related features to v9.5 by @CyanVoxel in #522
- fix: don't check db version with new library by @yedpodtrzitko in #536
- fix(ui): update ui when removing fields by @DandyDev01 in #560
- feat(parity): backend for aliases and parent tags by @DandyDev01 in #596
- fix: "open in explorer" opens correct folder by @KirilBourakov in #603
- fix: ui/ux parity fixes for thumbnails and files by @CyanVoxel in #608
- feat(parity): migrate json libraries to sqlite by @CyanVoxel in #604
- fix: clear all setting values when opening a library by @VasigaranAndAngel in #622
- fix: remove/rework windows path tests by @VasigaranAndAngel in #625
- fix: add check to see if library is loaded in filter_items by @Roc25 in #547
- fix: multiple macro errors by @Computerdores in #612
- fix: don't allow blank tag alias values in db by @CyanVoxel in #628
- feat: Reimplement drag drop files on sql migration by @seakrueger in #528
- fix: stop sqlite db from being updated while running tests by @python357-1 in #648
- fix: enter/return adds top result tag by @SkeleyM in #651
- fix: show correct unlinked files count by @SkeleyM in #653
- feat: implement parent tag search by @Computerdores in #673
- fix: only close add tag menu with no search by @SkeleyM in #685
- fix: drag and drop no longer resets by @SkeleyM in #710
- feat(ui): port "create and add tag" to main branch by @SkeleyM in #711
- fix: don't add default title field, use proper phrasing for adding files by @CyanVoxel in htt...
Alpha v9.4.2
Added/Fixed
- Create auto-backup of library for use in save failures (Fix #343) by @CyanVoxel in #554
Full Changelog: v9.4.1...v9.4.2
NOTE: v9.5 is nearing parity with v9.4 features, and will enter an early pre-release stage in the near future. These releases will not contain many new v9.5 features, but will be built upon the new backend library system. Future pre-releases will include planned new features and any applicable fixes before a final v9.5 release.
Alpha v9.4.1
This patch includes various fixes and improvements.
Added
- Warn user if FFmpeg is not installed by @seakrueger in #441
- Support for
.raf
and.orf
raw image thumbnails and previews by @CyanVoxel in 5995e4d and 4d405b5
Fixed
- Use
birthtime
for file creation time on Mac & Windows by @seakrueger in #472 - Use audio icon fallback when FFmpeg is not detected by @seakrueger in #471
- Retain search query upon directory refresh by @seakrueger in #483
Changed
- Significantly improve file re-scanning performance by @CyanVoxel in #486
Full Changelog: v9.4.0...v9.4.1
Alpha v9.4.0
NOTE: FFmpeg is required for video thumbnails and playback.
Added
- Copy and paste fields by @Creepler13 in #79
- Add multiple fields at once by @yedpodtrzitko in #134
- Drag and drop files in/out of the program by @Creepler13 in #153
- Files can be shared by dragging them from the thumbnail grid to other programs
- Files can be added to library folder by dragging them into the program
- Manage Python virtual environment in Nix flake by @seakrueger in #229
- Ability to create tag when adding tags by @bjorn-out in #262
- Blender preview thumbnail support by @050011-code in #273
- File deletion/trashing by @PeterBouSaada in #282 and @CyanVoxel in #409
- Added right-click option on thumbnails and preview panel to delete files
- Added Edit Menu option for deleting files
- Added Delete key shortcut for deleting files
- Font preview thumbnail support by @Thesacraft in #307
- Short "Aa" previews for thumbnails
- Full alphabet preview for the preview pane
- Sort tags by alphabetical/color by @samuellieberman in #329
- File explorer action follows OS naming by @SupKittyMeow in #370
- Preview Source Engine files by @FavroiteGamers in #373
- Expanded thumbnail and preview features by @CyanVoxel in #390
- Add album cover art thumbnails
- Add audio waveform thumbnails for audio files without embedded cover art
- Add new default file thumbnails, both for generic and specific file types
- Change the unlinked file icon to better convey its meaning
- Add dropdown for different thumbnail sizes
- Show File Creation and Modified dates; Restyle file path label by @CyanVoxel in #430
Fixed
- Backslashes in f-string on file dupe widget by @Technoguyfication in #289
- Tags not shown when none searched by @samuellieberman in #328
- Avoid error from eagerly grabbing data values by @CyanVoxel in #347
- Correct behavior for tag search options by @CyanVoxel in #398
- Load Gallery-DL sidecar files correctly by @Computerdores in #403
- Correct duplicate file matching by @Toby222 in #410
- GPU hardware acceleration in Nix flake by @zierf in #418
- Suppress command prompt windows for FFmpeg in builds by @seakrueger in #436
Internal Changes
- Move type constants to media classes by @CyanVoxel in #331
- Combine open launch arguments by @UnusualEgg in #364
- Revamp Nix flake with devenv/direnv by @xarvex in cb4798b
- Remove impurity of Nix flake when used with direnv by @xarvex in bc38e56
New Contributors
- @Technoguyfication made their first contribution in #289
- @050011-code made their first contribution in #273
- @samuellieberman made their first contribution in #328
- @UnusualEgg made their first contribution in #364
- @bjorn-out made their first contribution in #262
- @zierf made their first contribution in #418
- @Toby222 made their first contribution in #410
- @SupKittyMeow made their first contribution in #370
- @FavroiteGamers made their first contribution in #373
- @Computerdores made their first contribution in #403
Full Changelog: v9.3.2...v9.4.0
Alpha v9.3.2
Fixed
- Fix signal log warning (#305) by @Thesacraft in #306
- Fix "Folders to Tags" feature by @CyanVoxel in 5c25666
- Fix search ignoring case of extension list by @CyanVoxel in 1204d2b
Internal Changes
- Add tests into CI by @yedpodtrzitko in #286
- Create testing library files ad-hoc by @yedpodtrzitko in #292
- Refactoring: centralize field IDs by @yedpodtrzitko in #157
- Update to pyside6 version 6.7.1 by @Thesacraft in #223
Full Changelog: v9.3.1...v9.3.2
Alpha v9.3.1
Fixed
- Separately pin QT nixpkg version by @seakrueger in #244
- Bugfix for #252, don't attempt to read video file if invalid or 0 frames long by @Loran425 in #275
- Toggle Mouse Event Transparency on ItemThumbs (Fix #256) by @CyanVoxel in #279
- Refactor
video_player.py
(Fix #270) by @CyanVoxel in #274
New Contributors
- @seakrueger made their first contribution in #244
Full Changelog: v9.3.0...v9.3.1
Alpha v9.3.0
Added
- Added playback previews for video files (by @DrRetro2033 in #149)
- Added Boolean "and/or" search mode selection (by @YoyloNerd in #232)
- Added ability to scan and fix duplicate entries (not to be confused with duplicate files) from the "Fix Unlinked Entries" menu (by @CyanVoxel in #204)
- Added βSelect Allβ (Ctrl+A / β Command+A) hotkey for the library grid view (by @yedpodtrzitko in #217)
- Added "Clear Selection" hotkey (Esc) for the library grid view (by @PencilVoid in #259)
- Added the ability to invert the file extension inclusion list into an exclusion list (by @Thesacraft in #251)
- Added default landing page when no library is open (by @CyanVoxel in #258)
Fixed
- TagStudio will no longer attempt to or allow you to reopen a library from a missing location (by @Loran425 in #238 and #240)
- Fixed
PermissionError
when attempting to access files with a higher permission level upon scanning the library directory (by @Thesacraft in #228) - Fixed RAW image previews sometimes not loading (by @Thesacraft in #228 and @CyanVoxel in #233)
- Fixed most non-UTF-8 encoded text files from not being able to be previewed (by @CyanVoxel in #233)
- Fixed "Refresh Directories"/"Fix Unlinked Entries" creating duplicate entries (by @CyanVoxel in #204)
- Other miscellaneous fixes
Changed
- Renamed "Subtags" to "Parent Tags" to help better describe their function
- Increased number of tags shown by default in the "Add Tag" modal from 29 to 100
- Documentation is now split into individual linked files (by @Gawidev in #194) and updated to include future features
- Replaced use of
os.path
withpathlib
(by @Icosahunter in #156) .cr2
files are now included in the list of RAW image file types (by @PossiblePanda in #231)- Minimum supported macOS version raised to 12.0
New Contributors
- @Gawidev made their first contribution in #194
- @Icosahunter made their first contribution in #156
- @YoyloNerd made their first contribution in #232
- @PossiblePanda made their first contribution in #231
- @PencilVoid made their first contribution in #259
Full Changelog: v9.2.1...v9.3.0
Alpha v9.2.1
Added
- Basic thumbnail/preview support for RAW images (currently ".raw", ".dng", ".rw2", ".nef", ".arw", ".crw", ".cr3")
- NOTE: These previews are currently slow to load given the nature of rendering them. In the future once thumbnail caching is added, this process should only happen once.
- Thumbnail/preview support for HEIF images
Fixed
- Fixed sidebar not expanding horizontally
- Fixed "Recent Library" list not updating when creating a new library
- Fixed palletized images not loading with alpha channels
- Low resolution images (such as pixel art) now render with crisp edges in thumbnails and previews
- Fixed visual bug where the edit icon would show for incorrect fields
New Contributors
- @michaelmegrath made their first contribution in #189
- @Hidorikun made their first contribution in #142
Full Changelog: v9.2.0...v9.2.1-pre
Alpha v9.2.0
Added
- Full macOS and Linux support
- Ability to apply tags to multiple selections at once
- Right-click context menu for opening files or their locations
- Support for all filetypes inside of the library
- Configurable filetype blacklist
- Option to automatically open last used library on startup
- Tool to convert folder structure to tag tree
- SIGTERM handling in console window
- Keyboard shortcuts for basic functions
- Basic support for plaintext thumbnails
- Default icon for files with no thumbnail support
- Menu action to close library
- All tags now show in the "Add Tag" panel by default
- Modal view to view and manage all library tags
- Build scripts for Windows and macOS
- Help menu option to visit the GitHub repository
- Toggleable "Recent Libraries" list in the entry side panel
Fixed
- Fixed errors when performing actions with no library open
- Fixed bug where built-in tags were duplicated upon saving
- QThreads are now properly terminated on application exit
- Images with rotational EXIF data are now properly displayed
- Fixed "truncated" images causing errors
- Fixed images with large resolutions causing errors
Changed
- Updated minimum Python version to 3.12
- Various UI improvements
- Improved legibility of the Light Theme (still a WIP)
- Updated Dark Theme
- Added hand cursor to several clickable elements
- Fixed network paths not being able to load
- Various code cleanup and refactoring
- New application icons
Known Issues
- Using and editing multiple entry fields of the same type may result in incorrect field(s) being updated
- Adding Favorite or Archived tags via the thumbnail badges may apply the tag(s) to incorrect fields
- Searching for tag names with spaces does not currently function as intended
- A temporary workaround it to omit spaces in tag names when searching
- Sorting fields using the "Sort Fields" macro may result in edit icons being shown for incorrect fields
New Contributors
- @0xnim made their first contribution in #6
- @OleMortensen8 made their first contribution in #10
- @Thesacraft made their first contribution in #22
- @Loran425 made their first contribution in #30
- @LennartCode made their first contribution in #33
- @dakota-marshall made their first contribution in #35
- @xarvex made their first contribution in #43
- @eltociear made their first contribution in #46
- @DrRetro2033 made their first contribution in #34
- @cirillom made their first contribution in #69
- @Creepler13 made their first contribution in #58
- @yedpodtrzitko made their first contribution in #72
- @chao-master made their first contribution in #40
- @TechCrafterGaming made their first contribution in #101
- @gabrieljreed made their first contribution in #121
- @abby-freakazoid made their first contribution in #122
- @JinguBangWest made their first contribution in #126
- @SylviaSK made their first contribution in #123
- @arthniwa made their first contribution in #147
- @williamtcastro made their first contribution in #76
Full Changelog: https://github.com/TagStudioDev/TagStudio/commits/v9.2.0