Commits since last release.
- Replaced Tag chips in TagManager with new TagCard and DisplayedTags components
- Replaced front-end filtering + virtualization with db lookup + pagination + selection handling
- Created createTagFilterPipeline, getShiftSelectedTags, listFilteredTags, and regenTagThumbPaths
- Added thumbPaths to Tag schema and regen logic / triggers
- Added filters for dateCreated, dateModified, and count w/ logical ops to TagManager
- Extracted TagManager props and methods from tagStore into new tagManagerStore
- Added Tag Search Count to SettingsModal / config
- Created Pagination component and replaced direct mui references
- Created multi action bar in TagManager with select / deselect all, refresh, and search buttons
- Updated openSearchWindow to accept optional tagIds prop for pre-populating initial search
- Removed refresh counts, relations, and thumbnails buttons from TagManager header
- Created MultiTagEditor modal for adding / removing parent / child ids to multiple tags via TagManager
- Created editMultiTagRelations endpoint to handle editing multiple tag relations while ignoring changes that would break hierarchies
- Updated order of tag regen / refresh ops to ensure correct dependency chain
- Created refreshTag and refreshSelectedTags endpoints
- Removed refreshAllTagCounts, refreshAllTagRelations, refreshAllTagThumbPaths, refreshTagCounts, refreshTagRelations, and refreshTagThumbPaths endpoints
- Added descendantIds to Tag schema and display to TagEditor > Child Tags input
- Removed calculation and display of "New Ancestor Ids" from TagInputs.Relations
- Added multi-select logic to CollectionEditor and fileCollectionStore
- Added getShiftSelectedIds and toggleFIlesSelected actions to fileCollectionStore
- Removed toggle delete button from FileCollectionFile and isDeleted prop from MobX
- Added single-toggle selection to FileCollection and CollectionManager
- Can now add selected files to selected collection
- Replaced all destructuring of useStores with new
stores pattern
- Renamed all stores in RootStore to new pattern with some shortening
- Removed all passing of
rootStore to MobX actions with getRootStore() in action
- Added debouncing of file reloads in home / search windows until blocking modals are closed for improved UX / perceived performance
- Moved Home SortMenu from MultiActionBar to Drawer search filters
- Removed reload on sort change
- Updated copyFileForImport and importFile to derive tagIdsWithAncestors instead of passing through
- Renamed multiple components and store props for clarity