dogwithakeyboard
37acd6b79b
restore image performer age filter ( #4601 )
2024-02-21 11:22:04 +11:00
WithoutPants
76e5598876
Improve handling of moved and added video files ( #4598 )
...
* If old file path is not in library, treat as move
* Use existing phash if file with same oshash exists
2024-02-20 14:04:31 +11:00
dogwithakeyboard
8b1d4ccc97
Movie scene sorting ( #4588 )
2024-02-20 14:01:27 +11:00
WithoutPants
7bb38ae6dc
Don't error out if a single url not fetched ( #4591 )
2024-02-19 14:45:11 +11:00
WithoutPants
7d56f1a093
Fix panic
2024-02-19 14:10:41 +11:00
WithoutPants
afd7f02644
Error if duplicate plugin id is loaded ( #4571 )
...
* Error if duplicate plugin id is loaded
* Use case insensitive comparison
2024-02-19 13:55:52 +11:00
WithoutPants
e7f610ce18
Fix invalid share causing error during cleaning ( #4570 )
2024-02-19 10:24:10 +11:00
WithoutPants
440c261f5b
Developer option: extra blob paths ( #4566 )
...
* Allow additional read-only blob paths
* Add developer option to add more blob sources
* Add makefile targets to start and remove build container
* Documentation
2024-02-16 12:39:45 +11:00
WithoutPants
8fc997dfe9
Fix merge not deleting deleted scene generated files ( #4567 )
2024-02-16 12:38:34 +11:00
dogwithakeyboard
9ac6505241
Studio child filter and sort ( #4479 )
2024-02-06 13:24:00 +11:00
flubber1234
29677696fd
Add support for disabling mobile media-viewer's fullscreen auto-rotate ( #4416 )
2024-01-16 15:00:58 +11:00
WithoutPants
403f7c54ef
Move zip files while moving folders ( #4374 )
2024-01-16 14:48:28 +11:00
OFP
75099b38a8
Update Performer gender filter ( #4419 )
...
* Update Performer gender filter
Updated the Performer gender filter to allow selection of multiple genders (`IS`) or performers with no gender specified (`IS NULL`).
* Add default modifier for circumcised
* Handle existing saved filters
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2024-01-16 14:47:33 +11:00
keenbed
14bde44597
added support for image orientation filter ( #4404 )
...
* added support for image orientation filter
* Add orientation filtering to scenes
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2024-01-16 13:50:17 +11:00
WithoutPants
5cf28cf8af
Fix studio name uniqueness validation ( #4454 )
2024-01-14 12:52:16 +11:00
DingDongSoLong4
0b131f76df
Fix scene marker merging ( #4446 )
2024-01-10 10:25:05 +11:00
WithoutPants
6271f18979
Fix error when creating/updating performer with alias == name ( #4443 )
...
* Filter out performer aliases that match the name
* Validate when creating/updating performer in stash-box task
2024-01-09 14:57:49 +11:00
WithoutPants
743ab9a52c
Sort plugin settings ( #4435 )
2024-01-09 09:32:26 +11:00
DingDongSoLong4
910c7025dc
Fix scraped performer alias matching ( #4432 )
2024-01-08 11:50:31 +11:00
bayured
ea503833c5
Add join to intCriterionHandler ( #4414 )
...
* Add join to intCriterionHandler
* Add join to floatCriterionHandler
2024-01-08 11:48:16 +11:00
cc1234475
6848dec5f4
Add CSP to plugin from the yaml file ( #4424 )
2024-01-08 11:45:55 +11:00
DingDongSoLong4
0cdea209bb
Fix stats page SUM error ( #4390 )
2023-12-22 12:40:05 +02:00
WithoutPants
afda6decf2
Support setting file fingerprints ( #4376 )
...
* Support setting file fingerprints
* Disallow modifying managed hashes
2023-12-22 14:07:10 +11:00
DingDongSoLong4
d0d0d1e11f
Include image total O-Count on stats page ( #4386 )
2023-12-21 16:19:41 +11:00
Maista
e8af3c8e98
Set PYTHONPATH environment variable for Python script scrapers ( #4372 )
...
* Set PYTHONPATH environment variable for Python script scrapers
* Convert PYTHONPATH to absolute
* Generalise and apply to plugins
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2023-12-20 13:32:19 +11:00
DingDongSoLong4
26c3873122
Use int64 for sample-related FFProbeStream fields ( #4361 )
2023-12-14 13:31:58 +11:00
DingDongSoLong4
d4ef182871
Remove railsTimeLayout from ParseDateStringAsTime ( #4333 )
2023-12-01 22:28:38 +02:00
bob123491234
413311711f
Add Details, Studio Code, and Photographer to Images ( #4217 )
...
* Add Details, Code, and Photographer to Images
* Add date and details to image card
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2023-11-28 15:45:07 +11:00
bob123491234
d1018b4c5d
Add Studio Code and Photographer to Galleries. ( #4195 )
...
* Added Studio Code and Photographer to Galleries
* Fix gallery display on mobile
* Fixed potential panic when scraping with a bad configuration
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2023-11-28 15:05:33 +11:00
DingDongSoLong4
b78771dbcd
Manager refactor, part 1 ( #4298 )
...
* Move BackupDatabase and AnonymiseDatabase to internal/manager
* Rename config.Instance to config.Config
* Rename FFMPEG
* Rework manager and initialization process
* Fix Makefile
* Tweak phasher
* Fix config races
* Fix setup error not clearing
2023-11-28 13:56:46 +11:00
WithoutPants
b915428f06
UI Plugin API ( #4256 )
...
* Add page registration
* Add example plugin
* First version of proper react plugins
* Make reference react plugin
* Add patching functions
* Add tools link poc
* NavItem poc
* Add loading hook for lazily loaded components
* Add documentation
2023-11-28 13:06:44 +11:00
WithoutPants
11be56cc42
UI plugin dependencies ( #4307 )
...
* Add requires field to UI plugin config
* Use defer instead of async for useScript
* Load plugins based on dependency
* Document new field
2023-11-27 13:41:04 +11:00
WithoutPants
910ff27730
Convert legacy parsed date to UTC
2023-11-27 13:05:29 +11:00
WithoutPants
11a1e49292
Remove timezone from package date format ( #4313 )
...
* Use UTC date for manifest
* Use intl to format package dates
2023-11-27 12:13:01 +11:00
WithoutPants
a8140c11ec
Cache package list in memory instead of filesystem ( #4309 )
2023-11-23 14:16:13 +11:00
Maista
0dcd58763f
Log more when resolving Python ( #4185 )
...
* Log more when resolving Python
Users often have problems configuring their Python installations
* Convert if-else ladder to switch statement
* Consolidate Python resolution
Adds additional logging to plugin tasks to
align with the logging that scrapers output.
2023-11-22 10:04:15 +11:00
WithoutPants
987fa80786
Scraper and plugin manager ( #4242 )
...
* Add package manager
* Add SettingModal validate
* Reverse modal button order
* Add plugin package management
* Refactor ClearableInput
2023-11-22 10:01:11 +11:00
DingDongSoLong4
049a1b15c3
Add fingerprint resolver ( #4287 )
...
* Refactor into internal/api/models.go
* Add file fingerprint resolver
2023-11-20 13:09:12 +11:00
WithoutPants
222475df82
Plugin assets, external scripts and CSP overrides ( #4260 )
...
* Add assets for plugins
* Move plugin javascript and css into separate endpoints
* Allow loading external scripts
* Add csp overrides
* Only include enabled plugins
* Move URLMap to utils
* Use URLMap for assets
* Add documentation
2023-11-19 10:41:16 +11:00
DingDongSoLong4
4dd4c3c658
Improved/fixed macOS support ( #4153 )
...
* Fix macOS notifications
* Change CFBundleIdentifier to match domain
* Distribute Stash.app
* Also build universal phasher binary
* Fix binary name in check_version.go
* Expose GOOS, working dir and home dir in systemStatus endpoint
* Disable setup in working directory when running Stash.app
* More Makefile improvements, remove unused scripts
* Improve READMEs and documentation
2023-11-19 10:36:13 +11:00
DingDongSoLong4
72779e618d
Fix batch performer tag panic ( #4281 )
2023-11-12 03:50:09 +02:00
DingDongSoLong4
4715c5ebb2
Fix performer validation ( #4248 )
...
* Fix performer validation
* Add tests
* Rename QueryCount argument
* Minor refactoring
* Add duplicate alias validation
* Make UI alias validation also case-insensitive
2023-11-02 16:23:54 +11:00
DingDongSoLong4
d96558704a
Improve random sorting algorithm ( #4246 )
2023-11-02 16:13:56 +11:00
DingDongSoLong4
9621213424
Genericise sliceutil functions ( #4253 )
...
* Genericise sliceutil.SliceSame
* Genericise intslice functions
* Genericise stringutil functions
2023-11-02 08:58:32 +11:00
its-josh4
2b8c2534dd
Update a number of dependencies (incl. CVE fixes) ( #4107 )
...
* Update a number of dependencies (incl. CVE fixes)
Includes some dependencies that were upgraded in #4106 as well as a few more dependencies.
Some deps that have been upgraded had CVEs.
Notably, upgrades deprecated dependencies such as:
- `github.com/go-chi/chi` (replaced with `/v5`)
- `github.com/gofrs/uuid` (replaced with `/v5`)
- `github.com/hashicorp/golang-lru` (replaced with `/v2` which uses generics)
* Upgraded a few more deps
* lint
* reverted yaml library to v2
* remove unnecessary mod replace
* Update chromedp
Fixes #3733
2023-10-26 16:24:32 +11:00
its-josh4
b99d16b712
Some cosmetic fixes from #4106 ( #4236 )
2023-10-23 08:20:41 +11:00
WithoutPants
2b8718100b
Plugin settings ( #4143 )
...
* Add backend support for plugin settings
* Add plugin settings config
* Add UI support for plugin settings
2023-10-18 14:09:13 +11:00
WithoutPants
b6714fafba
Remove deprecated graphql fields ( #4064 )
...
* Remove deprecated list*Scrapers queries
* Remove other deprecated query resolvers
* Remove deprecated config fields
* Remove deprecated gallery fields
* Remove deprecated image fields
* Remove deprecated movie fields
* Remove deprecated performer fields
* Document scrape function issue
* Remove deprecated studio fields
* Remove deprecated scan input fields
* Remove deprecated scene fields
* Remove deprecated fields from filters
* Remove scene.file_mod_time
2023-10-17 11:59:35 +11:00
Flashy78
789de2d5f6
Errors for performer/studio non-unique names ( #4178 )
...
* Errors for performer/studio non-unique names
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2023-10-16 17:26:43 +11:00
WithoutPants
2fd7141f0f
Javascript scraper postprocess ( #4200 )
...
* Add javascript post-process action
* Add documentation
2023-10-16 17:17:36 +11:00
bob123491234
bdf705fe7c
Fix images total megapixels and filesize queries ( #4203 )
2023-10-16 17:16:40 +11:00
dogwithakeyboard
7605eec6da
scene framerate filter ( #4161 )
2023-10-16 16:28:28 +11:00
WithoutPants
b6808dc714
Add support for disabling plugins ( #4141 )
...
* Move timestamp to own file
* Backend changes
* UI changes
2023-10-16 16:15:12 +11:00
Flashy78
e5af37efbc
Tagger match performer by alias ( #4182 )
2023-10-16 14:39:41 +11:00
DingDongSoLong4
33f2ebf2a3
Model refactor, part 3 ( #4152 )
...
* Remove manager.Repository
* Refactor other repositories
* Fix tests and add database mock
* Add AssertExpectations method
* Refactor routes
* Move default movie image to internal/static and add convenience methods
* Refactor default performer image boxes
2023-10-16 14:26:34 +11:00
Emilo2
40bcb4baa5
Fix url's from gallery scrapers ( #4206 )
...
* Fill in urls array when gallery scraper provides only single url
2023-10-16 13:27:42 +11:00
WithoutPants
623dc8392e
Rename stash_id in 49 postmigrate
2023-10-10 10:23:54 +11:00
WithoutPants
7894d0fc1f
Fix unique folder migration error ( #4170 )
2023-10-04 10:21:31 +11:00
WithoutPants
0dbe3e6ea8
Fix data corruption when moving folders ( #4169 )
...
* Add data correction migration
* Correct folder hierarchy after folder move
2023-10-03 17:05:08 +11:00
DingDongSoLong4
bc5df7cfaf
Fix gallery scraper url loading ( #4157 )
2023-09-30 10:43:57 +10:00
WithoutPants
9577600804
Gallery URLs ( #4114 )
...
* Initial backend changes
* Fix unit tests
* UI changes
* Fix missing URL filters
2023-09-25 12:27:20 +10:00
WithoutPants
22350d38bc
Filter migration fix ( #4151 )
...
* Exclude value for is null/not null
Also includes changes to the error message in the migration to include the filter string.
* Ignore null when setting from encoded criterion
2023-09-25 11:53:47 +10:00
elkorol
636b0a3167
Add Icons to tags if they have parent/child tags ( #3931 )
...
* Add Icons to tags if they have parent/child tags
* Refactor TagLink
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2023-09-20 14:08:00 +10:00
DingDongSoLong4
36e9ed7a6c
Fix bulk tagger again ( #4133 )
...
* Add ForEndpoint method
* Fix typo in schema 48 migration
2023-09-20 11:15:48 +10:00
WithoutPants
a25286bdcb
Multiple image URLs ( #4000 )
...
* Backend changes - ported from scene impl
* Front end changes
* Refactor URL mutation code
2023-09-12 13:31:53 +10:00
its-josh4
b36aa745d8
Fixed: CopyFile not working ( #4104 )
2023-09-11 14:43:42 +10:00
its-josh4
798db1a8ea
Improve error reporting when moving a transcoded file fails ( #4101 )
2023-09-11 12:48:39 +10:00
its-josh4
06d76307c3
Do not log ECONNRESET errors when serving transcoded video files ( #4099 )
2023-09-11 12:46:21 +10:00
DingDongSoLong4
24e4719abc
Model refactor, part 2 ( #4092 )
...
* Move conversions into changesetTranslator
* Improve mutation error messages
* Use models.New and models.NewPartial everywhere
* Replace getStashIDsFor functions
* Remove ImageCreateInput
* Remove unused parameters
* Refactor matching functions
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2023-09-11 12:24:15 +10:00
yoshnopa
c38e05cfa0
Allow empty values for because of isnull and isnotnull ( #4078 )
...
* Allow empty values for because of isnull and isnotnull
* Add float64 to the values just passed through
2023-09-02 08:57:40 +10:00
DingDongSoLong4
c364346a59
Model refactor ( #3915 )
...
* Add mockery config file
* Move basic file/folder structs to models
* Fix hack due to import loop
* Move file interfaces to models
* Move folder interfaces to models
* Move scene interfaces to models
* Move scene marker interfaces to models
* Move image interfaces to models
* Move gallery interfaces to models
* Move gallery chapter interfaces to models
* Move studio interfaces to models
* Move movie interfaces to models
* Move performer interfaces to models
* Move tag interfaces to models
* Move autotag interfaces to models
* Regenerate mocks
2023-09-01 10:39:29 +10:00
yoshnopa
20520a58b4
Saved filter refactor ( #4054 )
...
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2023-09-01 10:04:56 +10:00
DingDongSoLong4
1591180070
Fix bulk performer tagger ( #4024 )
...
* Fix tagger modal checkboxes
* Fix UNIQUE constraint detection
* Performer tagger cache invalidation
* Fix batch performer tagger
* Use ToPerformer in identify
* Add missing excluded fields
* Internationalize excluded fields
* Replace deprecated substr()
* Check RemoteSiteID nil
2023-08-17 10:21:24 +10:00
DingDongSoLong4
8be2c4b6d2
Fix performer tag sort ( #4018 )
...
* Fix performer tag sort
* Fix entirely unrelated test
2023-08-11 10:31:56 +10:00
Flashy78
8ac3353103
Added scene and image file deletion logging ( #4004 )
2023-08-08 09:34:05 +10:00
WithoutPants
107d1113e5
Rename marker folders when hash changes ( #3988 )
2023-08-02 16:15:37 +10:00
therandomguy42
ab4f56213f
Fix non-animated avif files getting classified as video files ( #3913 )
2023-08-01 14:17:34 +10:00
Flashy78
a665a56ef0
Studio Tagger ( #3510 )
...
* Studio image and parent studio support in scene tagger
* Refactor studio backend and add studio tagger
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2023-07-31 09:50:24 +10:00
DingDongSoLong4
4961c967ee
Add database optimise task ( #3929 )
...
* Add database optimise task
* Wrap errors
* US internationalisation
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2023-07-28 11:23:18 +10:00
DingDongSoLong4
95a78de3aa
Fix scene marker issues ( #3955 )
...
* Fix scene marker NOT NULL constraint error
* similar changes to gallery chapters
* Fix NULL conversion error if names are NULL in DB
* Fix scene marker form resetting
2023-07-28 11:22:43 +10:00
WithoutPants
a1da626c9f
Return scrape results if only relationships are returned ( #3954 )
...
* Handle scene scrape results where basic fields unset
* Apply fix to other types
* Show scrape dialog if only new items scraped
2023-07-27 19:50:25 +10:00
DingDongSoLong4
2ae30028ac
Fix scene marker/gallery chapter update overwriting created at date ( #3945 )
...
* Add UpdatePartial to gallery chapter
* Add UpdatePartial to gallery marker
* Fix UI, use yup and useFormik
2023-07-27 09:44:06 +10:00
DingDongSoLong4
424aad8307
Add SQL graphql mutations ( #3920 )
2023-07-26 13:54:33 +10:00
WithoutPants
4b07c5b60b
Include old URL in script input ( #3940 )
...
* Include old URL in script input
* Include URL in update input
2023-07-26 12:59:16 +10:00
DingDongSoLong4
ec14ad7564
Minor refactor ( #3924 )
...
* Move SceneFilenameParser to scene package
* Move Timestamp marshalling to internal/api, use gqlgen Int64 parser
2023-07-26 09:15:55 +10:00
DingDongSoLong4
5580525c2d
SQLite model refactoring, part 2 ( #3839 )
...
* Treat empty image input as null
* Add validation to models.Date
* Allow zero dates in database
* Make scene_markers.scene_id non-nullable
* Drop scraped_items table
* Remove movie/studio checksum
* Add migration notes
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2023-07-13 12:15:02 +10:00
WithoutPants
67d4f9729a
Multiple scene URLs ( #3852 )
...
* Add URLs scene relationship
* Update unit tests
* Update scene edit and details pages
* Update scrapers to use urls
* Post-process scenes during query scrape
* Update UI for URLs
* Change urls label
2023-07-12 11:51:52 +10:00
Flashy78
cbdd4d3cbf
Identify: Options to skip multiple results and single name performers ( #3707 )
...
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2023-07-11 14:37:00 +10:00
hontheinternet
ff22577ce0
Add additional stats to the Stats page ( #3812 )
...
* Add o_counter, play_duration, play_count, unique_play_count stats
2023-07-11 14:32:42 +10:00
plato178
f0d901a697
Add codec filters ( #3843 )
...
* Add video_codec and audio_codec filter criteria
* Add Audio Codec and Video Codec UI filters
2023-07-11 12:45:20 +10:00
WithoutPants
93b41fb650
Add folder rename detection ( #3817 )
2023-07-11 11:53:49 +10:00
WithoutPants
b4879ef758
Fix marker tag filtering ( #3846 )
2023-06-23 11:04:54 +10:00
WithoutPants
cfc3912dcd
Handle missing studio ids in getHierarchicalValues ( #3845 )
2023-06-23 11:04:12 +10:00
WithoutPants
0087bc941c
Sort special characters before numbers ( #3829 )
...
* Sort special characters before numbers (via local dep change)
2023-06-22 09:51:21 +10:00
DingDongSoLong4
f65e87773c
Include subsidiary studios/tags in tab badge counters ( #3816 )
...
* Add '_all' counts
* Use '_all' counts in UI
* Make other counts non-nullable
* Hide tab counts if zero
* Add resolver parameter
2023-06-16 10:46:14 +10:00
vt-idiot
47c3e855c8
Make displayed resolution information coherent for 2:1/VR files ( #3798 )
...
* Update text.ts
Displayed resolutions in Stash were confusing as hell when it came to VR files - which are typically 2:1. Now I understand why, it's assuming 16:9 files/looking at height only.
2023-06-16 10:19:46 +10:00
DingDongSoLong4
4f11a2820f
Ignore video clips in zip files ( #3826 )
2023-06-15 13:34:49 +10:00
DingDongSoLong4
1c13c9e1b1
SQLite model refactoring ( #3791 )
...
* Remove ID from PerformerPartial
* Separate studio model from sqlite model
* Separate movie model from sqlite model
* Separate tag model from sqlite model
* Separate saved filter model from sqlite model
* Separate scene marker model from sqlite model
* Separate gallery chapter model from sqlite model
* Move ErrNoRows checks into sqlite, improve empty result error messages
* Move SQLiteDate and SQLiteTimestamp to sqlite
* Use changesetTranslator everywhere, refactor for consistency
* Make PerformerStore.DestroyImage private
* Fix rating on movie create
2023-06-15 12:46:09 +10:00
WithoutPants
0c999080c2
Update gallery when adding image via scan ( #3802 )
2023-06-06 13:25:11 +10:00
WithoutPants
256e0a11ea
Fix joined hierarchical filtering ( #3775 )
...
* Fix joined hierarchical filtering
* Fix scene performer tag filter
* Generalise performer tag handler
* Add unit tests
* Add equals handling
* Make performer tags equals/not equals unsupported
* Make tags not equals unsupported
* Make not equals unsupported for performers criterion
* Support equals/not equals for studio criterion
* Fix marker scene tags equals filter
* Fix scene performer tag filter
* Make equals/not equals unsupported for hierarchical criterion
* Use existing studio handler in movie
* Hide unsupported tag modifier options
* Use existing performer tags logic where possible
* Restore old parent/child filter logic
* Disable sub-tags in equals modifier for tags criterion
2023-06-06 13:01:50 +10:00