* Use effective filter for keybinds/view random
* Refactor ImageList to use sidebar
* Add performer age filter to gallery sidebar
* Port metadata info changes
* Fix incorrect patch component parameter
* Update plugin doc and types
* Show unsupported filter criteria in filter tags
Shows a warning coloured filter tag, with warning icon and text "<type> (unsupported) ...". Cannot be edited, can only be removed. Won't be saved to saved filters.
* Generalise filtered recommendation rows. Include warning popover for unsupported criteria
* Disable studio overlay link if selecting
* Prevent scene preview scrubber click navigating during selection
* Prevent gallery preview scrubber click navigating during selection
* Add reveal in file manager button to file info panel
Adds a folder icon button next to the path field in the Scene, Image,
and Gallery file info panels. Clicking it calls a new GraphQL mutation
that opens the file's enclosing directory in the system file manager
(Finder on macOS, Explorer on Windows, xdg-open on Linux).
Also fixes the existing revealInFileManager implementations which were
constructing exec.Command but never calling Run(), making them no-ops:
- darwin: add Run() to open -R
- windows: add Run() and fix flag from \select to /select,<path>
- linux: implement with xdg-open on the parent directory
- desktop.go: use os.Stat instead of FileExists so folders work too
* Disallow reveal operation if request not from loopback
---------
Co-authored-by: 1509x <1509x@users.noreply.github.com>
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
* Add group filter criteria to tag and studio
* Add sidebar to groups list
* Refactor ListOperations to accept buttons
* Move create new button back to navbar
Having the create new button with a plus icon conflicted with the add sub-group button in the sub-groups view.
* Simplify group-sub-groups view
* Make list operation utility component
* Add defaults for sidebar filters
* Refactor gallery list for sidebar
* Fix gallery styling
* Fix sidebar state issues
* Auto-populate query string into name on create
* Remove new gallery button from navbar
* Make components patchable
* refactor(ui): make ImageCard patchable for plugin extensibility
Refactor ImageCard component to use PatchComponent wrapper.
Changes:
- Wrap ImageCard and sub-components with PatchComponent
- Extract ImageCardPopovers, ImageCardDetails, ImageCardOverlays,
ImageCardImage as separate patchable components
* Add documentation
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
* SceneCardsGrid plugin API patch
* GalleryCardGrid plugin API patch
* GroupCardGrid plugin API patch
* ImageGridCard plugin API patch
* PerformerCardGrid plugin API patch
* ImageGridCard name corrected
* SceneMarkerCardsGrid plugin API patch
* StudioCardGrid plugin API patch
* TagCardGrid plugin API patch
* GalleryGridCard.tsx renamed to GalleryCardGrid.tsx
* ImageGridCard renamed to ImageCardGrid
* SceneCardsGrid renamed to SceneCardGrid
* SceneMarkerCardsGrid renamed to SceneMarkerCardGrid
Create a new ListGroupData fragment that excludes expensive recursive
count fields (scene_count_all, sub_group_count_all, etc. with depth: -1).
These fields cause 10+ second queries on large databases when loading
the groups list page.
The full GroupData fragment is preserved for detail views where the
recursive counts are needed.
Wrap the CustomFieldsInput component with PatchComponent to allow
plugins to modify custom field input behavior. This enables plugins
to inject default fields, modify the onChange handler, or customize
the component rendering.
* Implement merging of performers
* Make the tag merge UI consistent with other types of merges
* Add merge action in scene menu
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
* Change link button icon and separate into component
* Add create/link tag dialog
* Add titles to buttons
* Add ability to link existing tags in scrape dialogs
* Move create link dialog
* Allow tags to have multiple stash-ids from the same endpoint
* Remove month/year only formats from ParseDateStringAsTime
* Add precision field to Date and handle parsing year/month-only dates
* Add date precision columns for date columns
* Adjust UI to account for fuzzy dates
Did not find this feature by myself. Had to have a forum discussion to realise this feature exists and is hidden in the advanced settings.
Added hint that this is an advanced setting.
* Revert scene list toolbar to use common filtered list toolbar
* Add unobtrusive sidebar toggle button
* Revert small device sidebar changes
* Minor styling fixes
* add WakeLockSentinel
prevents screen from sleeping ONLY in secure contexts (localhost, https)
closes#2884
* format, add types
* [wake-sentinel] add more releases, comments
release wakelock on dispose and end, call out secure contexts in error message
* Translated using Weblate (Russian)
Currently translated at 100.0% (1219 of 1219 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/ru/
* Translated using Weblate (Korean)
Currently translated at 100.0% (1222 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/ko/
* Translated using Weblate (Korean)
Currently translated at 100.0% (1222 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/ko/
* Translated using Weblate (German)
Currently translated at 100.0% (1222 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/de/
* Translated using Weblate (French)
Currently translated at 100.0% (1222 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/fr/
* Translated using Weblate (Japanese)
Currently translated at 83.9% (1026 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/ja/
* Translated using Weblate (Korean)
Currently translated at 100.0% (1222 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/ko/
* Translated using Weblate (Estonian)
Currently translated at 100.0% (1222 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/et/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1222 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/zh_Hans/
* Translated using Weblate (Spanish)
Currently translated at 96.7% (1182 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/es/
* Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1222 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/zh_Hant/
* Translated using Weblate (French)
Currently translated at 100.0% (1222 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/fr/
* Translated using Weblate (Korean)
Currently translated at 100.0% (1222 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/ko/
* Translated using Weblate (Swedish)
Currently translated at 100.0% (1222 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/sv/
* Translated using Weblate (Ukrainian)
Currently translated at 87.4% (1069 of 1222 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/uk/
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/
* Translated using Weblate (Estonian)
Currently translated at 98.7% (1217 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/et/
* Translated using Weblate (French)
Currently translated at 100.0% (1233 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/fr/
* Translated using Weblate (Czech)
Currently translated at 98.4% (1214 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/cs/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.6% (1229 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/zh_Hans/
* Translated using Weblate (Czech)
Currently translated at 100.0% (1233 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/cs/
* Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.0% (1221 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/zh_Hant/
* Translated using Weblate (Spanish)
Currently translated at 96.8% (1194 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/es/
* Translated using Weblate (Japanese)
Currently translated at 82.7% (1020 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/ja/
* Translated using Weblate (German)
Currently translated at 99.3% (1225 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/de/
* Translated using Weblate (Spanish)
Currently translated at 97.2% (1199 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/es/
* Translated using Weblate (Dutch)
Currently translated at 79.1% (976 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/nl/
* Translated using Weblate (Bulgarian)
Currently translated at 25.1% (310 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/bg/
* Translated using Weblate (Spanish)
Currently translated at 100.0% (1233 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/es/
* Translated using Weblate (Estonian)
Currently translated at 100.0% (1233 of 1233 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/et/
---------
Co-authored-by: direnyx <direnyx@noreply.codeberg.org>
Co-authored-by: lugged9922 <lugged9922@noreply.codeberg.org>
Co-authored-by: yec <yec@noreply.codeberg.org>
Co-authored-by: Marly21 <marly21@noreply.codeberg.org>
Co-authored-by: doodoo <doodoo@noreply.codeberg.org>
Co-authored-by: tobakumap <tobakumap@noreply.codeberg.org>
Co-authored-by: Zesty6249 <zesty6249@noreply.codeberg.org>
Co-authored-by: wql219 <wql219@noreply.codeberg.org>
Co-authored-by: donlothario <donlothario@noreply.codeberg.org>
Co-authored-by: danny60718 <danny60718@noreply.codeberg.org>
Co-authored-by: AlpacaSerious <alpacaserious@noreply.codeberg.org>
Co-authored-by: ves10023 <ves10023@noreply.codeberg.org>
Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: NymeriaCZ <nymeriacz@noreply.codeberg.org>
Co-authored-by: 2307777 <2307777@noreply.codeberg.org>
Co-authored-by: hirokazuk <hirokazuk@noreply.codeberg.org>
Co-authored-by: PhilipWaldman <philipwaldman@noreply.codeberg.org>
Co-authored-by: Gundir <gundir@noreply.codeberg.org>
* Refactor list operation buttons into a single button group
* Refactor ListFilter into FilteredListToolbar and restyle
* Move zoom keybinds out of zoom control
* Use button group for display mode select
* Hide zoom slider on xs devices
Removes the components inside the formikUtils function, which was causing incorrect re-renders.
Adds data-field to renderField instead, which is a far more simple change.
* Use more neutral language for content
* Add sfw mode setting
* Make configuration context mandatory
* Add sfw class when sfw mode active
* Hide nsfw performer fields in sfw mode
* Hide nsfw sort options
* Hide nsfw filter/sort options in sfw mode
* Replace o-count with like counter in sfw mode
* Use sfw label for o-counter filter in sfw mode
* Use likes instead of o-count in sfw mode in other places
* Rename sfw mode to sfw content mode
* Use sfw image for default performers in sfw mode
* Document SFW content mode
* Add SFW mode setting to setup
* Clarify README
* Change wording of sfw mode description
* Handle configuration loading error correctly
* Hide age in performer cards
* Filter out empty alias strings in studio modal create
* Reject empty alias strings in backend
* Remove invalid ValidateAliases call from UpdatePartial
This was calling using the values which are not necessarily the final values.
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
* Backend support for studio URLs
* FrontEnd addition
* Support URLs in BulkStudioUpdate
* Update tagger modal for URLs
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
* Add keyboard shortcuts for screenshot generation
- Add 'c c' shortcut to generate screenshot at current time
- Add 'c d' shortcut to generate default screenshot
- Update keyboard shortcuts documentation
* Add external links display option for performer thumbnails
- Introduced a new setting to show links on performer thumbnails.
- Updated PerformerCard to conditionally render social media links (Twitter, Instagram) and other external links.
- Enhanced ExternalLinksButton to open single links directly if specified.
- Updated configuration and localization files to support the new feature.