Skip to content

Commit

Permalink
parent 0cdea20
Browse files Browse the repository at this point in the history
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291425 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291424 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291423 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291422 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291420 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291418 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291418 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291417 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291413 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291412 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291411 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291410 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291409 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291407 +0000

parent 0cdea20
author dogwithakeyboard <gdkjhsahdka@protonmail.com> 1703879810 +0000
committer dogwithakeyboard <gdkjhsahdka@protonmail.com> 1708291326 +0000

Image performer age filter

Fix saved filter UI bugs (stashapp#4394)

* Fix missing intl strings
* Fix saved filter list z-index
* Fix saved filter list double scrollbar
* Display error inside filter list
* Filter out nonexistent saved filter rows in FrontPageConfig

Refresh package managers after setup (stashapp#4397)

* Refresh package managers after setup
* Fix default plugins/scrapers paths

Fix Scene Tagger config blacklist  (stashapp#4396)

* Refactoring
* Add item on Enter
* Don't add duplicate items

Update macOS readme links (stashapp#4347)

* Update readme macOS download links

* Update docker readme to point to develop branch

Revert modal button order change (stashapp#4400)

Use 8.14.3-r0 of vips (stashapp#4402)

Workaround setting protocol on external player url (stashapp#4403)

Update changelog for bugfix release

Add CSP to plugin from the yaml file (stashapp#4424)

Add join to intCriterionHandler (stashapp#4414)

* Add join to intCriterionHandler
* Add join to floatCriterionHandler

Fix scraped performer alias matching (stashapp#4432)

Fixes package manger head border (stashapp#4420)

Scene queue autoplay (stashapp#4428)

* Remove unnecessary undefined checks
* Respect autostartVideoOnPlaySelected in scene queue

Fix settings tab links (stashapp#4430)

Disable select all checkbox for plugin sources (stashapp#4434)

Sort plugin settings (stashapp#4435)

Update FieldStrategyOverwrite to work when scene has no existing URL (stashapp#4412)

Hide tag input when set tags is disabled (stashapp#4440)

Calculate DetailImage fallback width using rem (stashapp#4441)

Don't bail on error when scraping all (stashapp#4442)

Fix error when creating/updating performer with alias == name (stashapp#4443)

* Filter out performer aliases that match the name
* Validate when creating/updating performer in stash-box task

Fix scene marker merging (stashapp#4446)

Update changelog for bugfix release

Don't retry failed autoplay (stashapp#4450)

Fix studio name uniqueness validation (stashapp#4454)

Update changelog

added support for image orientation filter (stashapp#4404)

* added support for image orientation filter
* Add orientation filtering to scenes
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>

Bump golang.org/x/crypto from 0.14.0 to 0.17.0 (stashapp#4375)

Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.14.0 to 0.17.0.
- [Commits](golang/crypto@v0.14.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Bump vite from 4.4.11 to 4.4.12 in /ui/v2.5 (stashapp#4348)

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.11 to 4.4.12.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.4.12/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.4.12/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Improved scene queue (stashapp#4448)

* Improved scene queue
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>

Update Performer gender filter (stashapp#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>

Move zip files while moving folders (stashapp#4374)

Add support for disabling mobile media-viewer's fullscreen auto-rotate (stashapp#4416)

Advanced settings (stashapp#4378)

* Add advanced settings mode toggle
* Add advanced settings

Improved list view for scenes, galleries and performers (stashapp#4368)

Co-authored-by: InfiniteStash <117855276+InfiniteStash@users.noreply.github.com>
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>

Tag select refactor (stashapp#4478)

* Add interface to load tags by id
* Use minimal data for tag select queries
* Center image/text in select list
* Overhaul tag select
* Support excludeIds. Comment out image in dropdown
* Replace existing selects
* Remove unused code
* Fix styling of aliases

Clarify session description (stashapp#4468)

Add note for auto tag (stashapp#4490)

Update scene list setting (stashapp#4473)

Minor UI fixes (stashapp#4509)

* Fix a zero value disabling the SettingModal
* Fix performer disambiguation styling
* Fix performer tagger error message

only use details background image when provided (stashapp#4515)

Frontend fix media_err_decode on playback (stashapp#4506)

Improve list table readability (stashapp#4497)

* fixes mandatory columns bug and consistency issues

Link improvements and fixes (stashapp#4501)

* Add ExternalLink
* Replace <a> with <Link>

Add blank favicon on login page (stashapp#4498)

Fix tag selector in scrape dialogs (stashapp#4526)

Studio select refactor (stashapp#4493)

* Add id interface to findStudios
* Replace existing selects
* Remove unused code
* Fix scrape/merge select
* Make clearable

expose useful libs (stashapp#4489)

* expose useful libs
* Update UIPluginApi.md

Fix UI crash during setup (stashapp#4527)

Fit cards properly within their containers (stashapp#4514)

* created missing cards grids

support filesize in scene list (stashapp#4480)

Studio child filter and sort (stashapp#4479)

Improve client-side graphql scalar types (stashapp#4511)

* Add types to graphql scalars
* Upgrade dependencies
* Override UI config type
* Remove all IUIConfig casts
* Add tableColumns to IUIConfig
* Add BoolMap type, set strictScalars
* Add PluginConfigMap
* Replace any with unknown
* Add SavedObjectFilter and SavedUIOptions
* Remove unused items from CriterionType

Bump vite from 4.4.12 to 4.5.2 in /ui/v2.5 (stashapp#4477)

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.12 to 4.5.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.5.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.5.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Improve sorting of results when entering text in select fields (stashapp#4528)

* Sort select results by relevance
* Apply relevance sorting to studio select
* Apply relevance sorting to filter select

Fix tag popper over card (stashapp#4529)

Fix UI config mutation not working (stashapp#4533)

Add gallery select filter and fix image gallery filtering (stashapp#4535)

* Accept gallery ids in findGalleries
* Add gallery select component
* Add and fix image gallery filter
* Show gallery path as alias

Wrap card popovers (stashapp#4539)

Common studio overlay component (stashapp#4540)

* Move GridCard to own directory
* Make common studio overlay component

Add disambiguation to performer link and performer select values (stashapp#4541)

* Add disambiguation to PerformerLink
* Add disambiguation to performer select values

Plugin api improvements (stashapp#4546)

* Expose useToast

* Expose components:

- studio/tag/performer/gallery selects
- date input
- country select
- folder select

Fix url not updated for default tab on Performer/Studio/Tag pages (stashapp#4538)

Fix scraped studio not matching existing value (stashapp#4548)

* Fix scraped studio not matching existing
* Fix incorrect key value

Fix segment repeating + cleanup speed calculation (stashapp#4557)

Bugfix: No Image Upscale for Clips (stashapp#4569)

Fix country selector in bulk performer edit dialog (stashapp#4565)

* Fix country select in edit performers dialog
* Fix edit performer dialog height

Mount edit panels only when first entering (stashapp#4564)

Fix merge not deleting deleted scene generated files (stashapp#4567)

Developer option: extra blob paths (stashapp#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

Weblate translations update (stashapp#4578)

* Translated using Weblate (French)

Currently translated at 100.0% (1056 of 1056 strings)

Translation: stashapp/stash
Translate-URL: https://hosted.weblate.org/projects/stashapp/stash/fr/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 81.3% (859 of 1056 strings)

Translation: stashapp/stash
Translate-URL: https://hosted.weblate.org/projects/stashapp/stash/pt_BR/

* Translated using Weblate (Swedish)

Currently translated at 96.3% (1017 of 1056 strings)

Translation: stashapp/stash
Translate-URL: https://hosted.weblate.org/projects/stashapp/stash/sv/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: stashapp/stash
Translate-URL: https://hosted.weblate.org/projects/stashapp/stash/

* Translated using Weblate (French)

Currently translated at 100.0% (1056 of 1056 strings)

Translation: stashapp/stash
Translate-URL: https://hosted.weblate.org/projects/stashapp/stash/fr/

* Translated using Weblate (Swedish)

Currently translated at 99.8% (1054 of 1056 strings)

Translation: stashapp/stash
Translate-URL: https://hosted.weblate.org/projects/stashapp/stash/sv/

* Translated using Weblate (French)

Currently translated at 100.0% (1056 of 1056 strings)

Translation: stashapp/stash
Translate-URL: https://hosted.weblate.org/projects/stashapp/stash/fr/

* Added translation using Weblate (Norwegian Bokmål)

* Translated using Weblate (French)

Currently translated at 100.0% (1056 of 1056 strings)

Translation: stashapp/stash
Translate-URL: https://hosted.weblate.org/projects/stashapp/stash/fr/

* Translated using Weblate (Hungarian)

Currently translated at 37.5% (397 of 1056 strings)

Translation: stashapp/stash
Translate-URL: https://hosted.weblate.org/projects/stashapp/stash/hu/

* Translated using Weblate (Swedish)

Currently translated at 99.9% (1055 of 1056 strings)

Translation: stashapp/stash
Translate-URL: https://hosted.weblate.org/projects/stashapp/stash/sv/

* Pretty locale files

* Sort locale keys

---------

Co-authored-by: doodoo <adr.web@hotmail.fr>
Co-authored-by: Robert de Abreu Viana <deathrobert2010@gmail.com>
Co-authored-by: alpacaserious <srhsgsef@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: R Balu <balu.ka@hotmail.com>
Co-authored-by: Luna Jernberg <droidbittin@gmail.com>

Update translation files (stashapp#4581)

Updated by "Cleanup translation files" hook in Weblate.

Translation: stashapp/stash
Translate-URL: https://hosted.weblate.org/projects/stashapp/stash/

Co-authored-by: Hosted Weblate <hosted@weblate.org>

Fix saved filter UI bugs (stashapp#4394)

* Fix missing intl strings
* Fix saved filter list z-index
* Fix saved filter list double scrollbar
* Display error inside filter list
* Filter out nonexistent saved filter rows in FrontPageConfig

Refresh package managers after setup (stashapp#4397)

* Refresh package managers after setup
* Fix default plugins/scrapers paths

Fix Scene Tagger config blacklist  (stashapp#4396)

* Refactoring
* Add item on Enter
* Don't add duplicate items

Update macOS readme links (stashapp#4347)

* Update readme macOS download links

* Update docker readme to point to develop branch

Revert modal button order change (stashapp#4400)

Use 8.14.3-r0 of vips (stashapp#4402)

Workaround setting protocol on external player url (stashapp#4403)

Add CSP to plugin from the yaml file (stashapp#4424)

Add join to intCriterionHandler (stashapp#4414)

* Add join to intCriterionHandler
* Add join to floatCriterionHandler

Fix scraped performer alias matching (stashapp#4432)

Fixes package manger head border (stashapp#4420)

Scene queue autoplay (stashapp#4428)

* Remove unnecessary undefined checks
* Respect autostartVideoOnPlaySelected in scene queue

Disable select all checkbox for plugin sources (stashapp#4434)

Sort plugin settings (stashapp#4435)

Update FieldStrategyOverwrite to work when scene has no existing URL (stashapp#4412)

Hide tag input when set tags is disabled (stashapp#4440)

Calculate DetailImage fallback width using rem (stashapp#4441)

Don't bail on error when scraping all (stashapp#4442)

Fix error when creating/updating performer with alias == name (stashapp#4443)

* Filter out performer aliases that match the name
* Validate when creating/updating performer in stash-box task

Fix scene marker merging (stashapp#4446)

Don't retry failed autoplay (stashapp#4450)

Fix studio name uniqueness validation (stashapp#4454)

Update changelog

Bump golang.org/x/crypto from 0.14.0 to 0.17.0 (stashapp#4375)

Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.14.0 to 0.17.0.
- [Commits](golang/crypto@v0.14.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Improved scene queue (stashapp#4448)

* Improved scene queue
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>

Move zip files while moving folders (stashapp#4374)

Clarify session description (stashapp#4468)

Add note for auto tag (stashapp#4490)

Update scene list setting (stashapp#4473)

only use details background image when provided (stashapp#4515)

Frontend fix media_err_decode on playback (stashapp#4506)

Improve list table readability (stashapp#4497)

* fixes mandatory columns bug and consistency issues

Add blank favicon on login page (stashapp#4498)

expose useful libs (stashapp#4489)

* expose useful libs
* Update UIPluginApi.md

Fix UI crash during setup (stashapp#4527)

support filesize in scene list (stashapp#4480)

Studio child filter and sort (stashapp#4479)

Bump vite from 4.4.12 to 4.5.2 in /ui/v2.5 (stashapp#4477)

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.12 to 4.5.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.5.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.5.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Fix tag popper over card (stashapp#4529)

Fix UI config mutation not working (stashapp#4533)

Wrap card popovers (stashapp#4539)

Common studio overlay component (stashapp#4540)

* Move GridCard to own directory
* Make common studio overlay component

Add disambiguation to performer link and performer select values (stashapp#4541)

* Add disambiguation to PerformerLink
* Add disambiguation to performer select values

Plugin api improvements (stashapp#4546)

* Expose useToast

* Expose components:

- studio/tag/performer/gallery selects
- date input
- country select
- folder select

Fix url not updated for default tab on Performer/Studio/Tag pages (stashapp#4538)

Fix scraped studio not matching existing value (stashapp#4548)

* Fix scraped studio not matching existing
* Fix incorrect key value

Fix segment repeating + cleanup speed calculation (stashapp#4557)

Bugfix: No Image Upscale for Clips (stashapp#4569)

Fix country selector in bulk performer edit dialog (stashapp#4565)

* Fix country select in edit performers dialog
* Fix edit performer dialog height

Mount edit panels only when first entering (stashapp#4564)

Fix merge not deleting deleted scene generated files (stashapp#4567)

Developer option: extra blob paths (stashapp#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

Update translation files (stashapp#4581)

Updated by "Cleanup translation files" hook in Weblate.

Translation: stashapp/stash
Translate-URL: https://hosted.weblate.org/projects/stashapp/stash/

Co-authored-by: Hosted Weblate <hosted@weblate.org>
  • Loading branch information
dogwithakeyboard and weblate committed Feb 18, 2024
1 parent 0cdea20 commit e71fd25
Show file tree
Hide file tree
Showing 318 changed files with 19,194 additions and 15,829 deletions.
2 changes: 1 addition & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

# GraphQL generated output
pkg/models/generated_*.go
ui/v2.5/src/core/generated-*.tsx
ui/v2.5/src/core/generated-graphql.ts

####
# Jetbrains
Expand Down
18 changes: 18 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ GO_BUILD_TAGS += sqlite_stat4 sqlite_math_functions

export CGO_ENABLED := 1

# define COMPILER_IMAGE for cross-compilation docker container
ifndef COMPILER_IMAGE
COMPILER_IMAGE := stashapp/compiler:latest
endif

.PHONY: release
release: pre-ui generate ui build-release

Expand Down Expand Up @@ -378,3 +383,16 @@ docker-build: build-info
.PHONY: docker-cuda-build
docker-cuda-build: build-info
docker build --build-arg GITHASH=$(GITHASH) --build-arg STASH_VERSION=$(STASH_VERSION) -t stash/cuda-build -f docker/build/x86_64/Dockerfile-CUDA .

# start the build container - for cross compilation
# this is adapted from the github actions build.yml file
.PHONY: start-compiler-container
start-compiler-container:
docker run -d --name build --mount type=bind,source="$(PWD)",target=/stash,consistency=delegated $(EXTRA_CONTAINER_ARGS) -w /stash $(COMPILER_IMAGE) tail -f /dev/null

# run the cross-compilation using
# docker exec -t build /bin/bash -c "make build-cc-<platform>"

.PHONY: remove-compiler-container
remove-compiler-container:
docker rm -f -v build
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ For further information you can consult the [documentation](https://docs.stashap

# Installing Stash

<img src="docs/readme_assets/windows_logo.svg" width="100%" height="75"> Windows | <img src="docs/readme_assets/mac_logo.svg" width="100%" height="75"> MacOS| <img src="docs/readme_assets/linux_logo.svg" width="100%" height="75"> Linux | <img src="docs/readme_assets/docker_logo.svg" width="100%" height="75"> Docker
<img src="docs/readme_assets/windows_logo.svg" width="100%" height="75"> Windows | <img src="docs/readme_assets/mac_logo.svg" width="100%" height="75"> macOS | <img src="docs/readme_assets/linux_logo.svg" width="100%" height="75"> Linux | <img src="docs/readme_assets/docker_logo.svg" width="100%" height="75"> Docker
:---:|:---:|:---:|:---:
[Latest Release](https://github.com/stashapp/stash/releases/latest/download/stash-win.exe) <br /> <sup><sub>[Development Preview](https://github.com/stashapp/stash/releases/download/latest_develop/stash-win.exe)</sub></sup> | [Latest Release (Apple Silicon)](https://github.com/stashapp/stash/releases/latest/download/stash-macos-applesilicon) <br />[Latest Release (Intel)](https://github.com/stashapp/stash/releases/latest/download/stash-macos-intel) <br /><sup><sub>[Development Preview (Universal)](https://github.com/stashapp/stash/releases/download/latest_develop/stash-macos)</sub></sup> | [Latest Release (amd64)](https://github.com/stashapp/stash/releases/latest/download/stash-linux) <br /> <sup><sub>[Development Preview (amd64)](https://github.com/stashapp/stash/releases/download/latest_develop/stash-linux)</sub></sup> <br /> [More Architectures...](https://github.com/stashapp/stash/releases/latest) | [Instructions](docker/production/README.md) <br /> <sup><sub> [Sample docker-compose.yml](docker/production/docker-compose.yml)</sub></sup>
[Latest Release](https://github.com/stashapp/stash/releases/latest/download/stash-win.exe) <br /> <sup><sub>[Development Preview](https://github.com/stashapp/stash/releases/download/latest_develop/stash-win.exe)</sub></sup> | [Latest Release](https://github.com/stashapp/stash/releases/latest/download/Stash.app.zip) <br /> <sup><sub>[Development Preview](https://github.com/stashapp/stash/releases/download/latest_develop/Stash.app.zip)</sub></sup> | [Latest Release (amd64)](https://github.com/stashapp/stash/releases/latest/download/stash-linux) <br /> <sup><sub>[Development Preview (amd64)](https://github.com/stashapp/stash/releases/download/latest_develop/stash-linux)</sub></sup> <br /> [More Architectures...](https://github.com/stashapp/stash/releases/latest) | [Instructions](docker/production/README.md) <br /> <sup><sub>[Sample docker-compose.yml](docker/production/docker-compose.yml)</sub></sup>

Download links for other platforms and architectures are available on the [Releases page](https://github.com/stashapp/stash/releases).

## First Run

Expand Down
7 changes: 6 additions & 1 deletion docker/ci/x86_64/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,13 @@ RUN if [ "$TARGETPLATFORM" = "linux/arm/v6" ]; then BIN=stash-linux-arm32v6; \

FROM --platform=$TARGETPLATFORM alpine:latest AS app
COPY --from=binary /stash /usr/bin/

# vips version 8.15.0-r0 breaks thumbnail generation on arm32v6
# need to use 8.14.3-r0 from alpine 3.18 instead

RUN apk add --no-cache --virtual .build-deps gcc python3-dev musl-dev \
&& apk add --no-cache ca-certificates python3 py3-requests py3-requests-toolbelt py3-lxml py3-pip ffmpeg vips-tools ruby tzdata \
&& apk add --no-cache ca-certificates python3 py3-requests py3-requests-toolbelt py3-lxml py3-pip ffmpeg ruby tzdata \
&& apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.18/community vips=8.14.3-r0 vips-tools=8.14.3-r0 \
&& pip install --user --break-system-packages mechanicalsoup cloudscraper bencoder.pyx \
&& gem install faraday \
&& apk del .build-deps
Expand Down
4 changes: 2 additions & 2 deletions docker/production/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ https://docs.docker.com/engine/install/

### Get the docker-compose.yml file

Now you can either navigate to the [docker-compose.yml](https://raw.githubusercontent.com/stashapp/stash/master/docker/production/docker-compose.yml) in the repository, or if you have curl, you can make your Linux console do it for you:
Now you can either navigate to the [docker-compose.yml](https://raw.githubusercontent.com/stashapp/stash/develop/docker/production/docker-compose.yml) in the repository, or if you have curl, you can make your Linux console do it for you:

```
mkdir stashapp && cd stashapp
curl -o docker-compose.yml https://raw.githubusercontent.com/stashapp/stash/master/docker/production/docker-compose.yml
curl -o docker-compose.yml https://raw.githubusercontent.com/stashapp/stash/develop/docker/production/docker-compose.yml
```

Once you have that file where you want it, modify the settings as you please, and then run:
Expand Down
8 changes: 4 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,12 @@ require (
github.com/vektra/mockery/v2 v2.10.0
github.com/xWTF/chardet v0.0.0-20230208095535-c780f2ac244e
github.com/zencoder/go-dash/v3 v3.0.2
golang.org/x/crypto v0.14.0
golang.org/x/crypto v0.17.0
golang.org/x/image v0.12.0
golang.org/x/net v0.17.0
golang.org/x/sys v0.13.0
golang.org/x/term v0.13.0
golang.org/x/text v0.13.0
golang.org/x/sys v0.15.0
golang.org/x/term v0.15.0
golang.org/x/text v0.14.0
gopkg.in/guregu/null.v4 v4.0.0
gopkg.in/yaml.v2 v2.4.0
)
Expand Down
15 changes: 8 additions & 7 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -614,8 +614,8 @@ golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
Expand Down Expand Up @@ -827,14 +827,14 @@ golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek=
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
Expand All @@ -846,8 +846,9 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
Expand Down
2 changes: 2 additions & 0 deletions gqlgen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ models:
model: github.com/stashapp/stash/internal/api.Timestamp
BoolMap:
model: github.com/stashapp/stash/internal/api.BoolMap
PluginConfigMap:
model: github.com/stashapp/stash/internal/api.PluginConfigMap
# define to force resolvers
Image:
model: github.com/stashapp/stash/pkg/models.Image
Expand Down
7 changes: 5 additions & 2 deletions graphql/schema/schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ type Query {
findStudios(
studio_filter: StudioFilterType
filter: FindFilterType
ids: [ID!]
): FindStudiosResultType!

"Find a movie by ID"
Expand All @@ -83,12 +84,14 @@ type Query {
findGalleries(
gallery_filter: GalleryFilterType
filter: FindFilterType
ids: [ID!]
): FindGalleriesResultType!

findTag(id: ID!): Tag
findTags(
tag_filter: TagFilterType
filter: FindFilterType
ids: [Int!]
): FindTagsResultType!

"Retrieve random scene markers for the wall"
Expand Down Expand Up @@ -201,11 +204,11 @@ type Query {
allSceneMarkers: [SceneMarker!]!
allImages: [Image!]!
allGalleries: [Gallery!]!
allStudios: [Studio!]!
allMovies: [Movie!]!
allTags: [Tag!]!

allPerformers: [Performer!]! @deprecated(reason: "Use findPerformers instead")
allTags: [Tag!]! @deprecated(reason: "Use findTags instead")
allStudios: [Studio!]! @deprecated(reason: "Use findStudios instead")

# Get everything with minimal metadata

Expand Down
2 changes: 1 addition & 1 deletion graphql/schema/types/config.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,7 @@ type ConfigResult {
scraping: ConfigScrapingResult!
defaults: ConfigDefaultSettingsResult!
ui: Map!
plugins(include: [String!]): Map!
plugins(include: [ID!]): PluginConfigMap!
}

"Directory structure of a path"
Expand Down
22 changes: 22 additions & 0 deletions graphql/schema/types/filters.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,19 @@ input ResolutionCriterionInput {
modifier: CriterionModifier!
}

enum OrientationEnum {
"Landscape"
LANDSCAPE
"Portrait"
PORTRAIT
"Square"
SQUARE
}

input OrientationCriterionInput {
value: [OrientationEnum!]!
}

input PHashDuplicationCriterionInput {
duplicated: Boolean
"Currently unimplemented"
Expand Down Expand Up @@ -212,6 +225,8 @@ input SceneFilterType {
duplicated: PHashDuplicationCriterionInput
"Filter by resolution"
resolution: ResolutionCriterionInput
"Filter by orientation"
orientation: OrientationCriterionInput
"Filter by frame rate"
framerate: IntCriterionInput
"Filter by video codec"
Expand Down Expand Up @@ -316,6 +331,8 @@ input StudioFilterType {
url: StringCriterionInput
"Filter by studio aliases"
aliases: StringCriterionInput
"Filter by subsidiary studio count"
child_count: IntCriterionInput
"Filter by autotag ignore value"
ignore_auto_tag: Boolean
"Filter by creation time"
Expand Down Expand Up @@ -465,6 +482,8 @@ input ImageFilterType {
o_counter: IntCriterionInput
"Filter by resolution"
resolution: ResolutionCriterionInput
"Filter by orientation"
orientation: OrientationCriterionInput
"Filter to only include images missing this property"
is_missing: String
"Filter to only include images with this studio"
Expand All @@ -481,6 +500,8 @@ input ImageFilterType {
performer_count: IntCriterionInput
"Filter images that have performers that have been favorited"
performer_favorite: Boolean
"Filter images by performer age at time of image"
performer_age: IntCriterionInput
"Filter to only include images with these galleries"
galleries: MultiCriterionInput
"Filter by creation time"
Expand Down Expand Up @@ -545,6 +566,7 @@ input MultiCriterionInput {

input GenderCriterionInput {
value: GenderEnum
value_list: [GenderEnum!]
modifier: CriterionModifier!
}

Expand Down
3 changes: 0 additions & 3 deletions graphql/schema/types/logging.graphql
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
"Log entries"
scalar Time

enum LogLevel {
Trace
Debug
Expand Down
2 changes: 0 additions & 2 deletions graphql/schema/types/metadata.graphql
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
scalar Upload

input GenerateMetadataInput {
covers: Boolean
sprites: Boolean
Expand Down
13 changes: 11 additions & 2 deletions graphql/schema/types/scalars.graphql
Original file line number Diff line number Diff line change
@@ -1,16 +1,25 @@
"An RFC3339 timestamp"
scalar Time

"""
Timestamp is a point in time. It is always output as RFC3339-compatible time points.
It can be input as a RFC3339 string, or as "<4h" for "4 hours in the past" or ">5m"
for "5 minutes in the future"
"""
scalar Timestamp

# generic JSON object
"A String -> Any map"
scalar Map

# string, boolean map
"A String -> Boolean map"
scalar BoolMap

"A plugin ID -> Map (String -> Any map) map"
scalar PluginConfigMap

scalar Any

scalar Int64

"A multipart file upload"
scalar Upload
37 changes: 37 additions & 0 deletions internal/api/plugin_map.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package api

import (
"encoding/json"
"fmt"
"io"

"github.com/99designs/gqlgen/graphql"
)

func MarshalPluginConfigMap(val map[string]map[string]interface{}) graphql.Marshaler {
return graphql.WriterFunc(func(w io.Writer) {
err := json.NewEncoder(w).Encode(val)
if err != nil {
panic(err)
}
})
}

func UnmarshalPluginConfigMap(v interface{}) (map[string]map[string]interface{}, error) {
m, ok := v.(map[string]interface{})
if !ok {
return nil, fmt.Errorf("%T is not a plugin config map", v)
}

result := make(map[string]map[string]interface{})
for k, v := range m {
val, ok := v.(map[string]interface{})
if !ok {
return nil, fmt.Errorf("key %s (%T) is not a map", k, v)
}

result[k] = val
}

return result, nil
}
4 changes: 2 additions & 2 deletions internal/api/resolver_model_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ import (
"github.com/stashapp/stash/internal/manager/config"
)

func (r *configResultResolver) Plugins(ctx context.Context, obj *ConfigResult, include []string) (map[string]interface{}, error) {
func (r *configResultResolver) Plugins(ctx context.Context, obj *ConfigResult, include []string) (map[string]map[string]interface{}, error) {
if len(include) == 0 {
ret := config.GetInstance().GetAllPluginConfiguration()
return ret, nil
}

ret := make(map[string]interface{})
ret := make(map[string]map[string]interface{})

for _, plugin := range include {
c := config.GetInstance().GetPluginConfiguration(plugin)
Expand Down
9 changes: 8 additions & 1 deletion internal/api/resolver_mutation_scene.go
Original file line number Diff line number Diff line change
Expand Up @@ -560,9 +560,16 @@ func (r *mutationResolver) SceneMerge(ctx context.Context, input SceneMergeInput
values = &v
}

mgr := manager.GetInstance()
fileDeleter := &scene.FileDeleter{
Deleter: file.NewDeleter(),
FileNamingAlgo: mgr.Config.GetVideoFileNamingAlgorithm(),
Paths: mgr.Paths,
}

var ret *models.Scene
if err := r.withTxn(ctx, func(ctx context.Context) error {
if err := r.Resolver.sceneService.Merge(ctx, srcIDs, destID, *values); err != nil {
if err := r.Resolver.sceneService.Merge(ctx, srcIDs, destID, *values, fileDeleter); err != nil {
return err
}

Expand Down
8 changes: 1 addition & 7 deletions internal/api/resolver_mutation_studio.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,10 @@ func (r *mutationResolver) StudioCreate(ctx context.Context, input models.Studio
if err := r.withTxn(ctx, func(ctx context.Context) error {
qb := r.repository.Studio

if err := studio.EnsureStudioNameUnique(ctx, 0, newStudio.Name, qb); err != nil {
if err := studio.ValidateCreate(ctx, newStudio, qb); err != nil {
return err
}

if len(input.Aliases) > 0 {
if err := studio.EnsureAliasesUnique(ctx, 0, input.Aliases, qb); err != nil {
return err
}
}

err = qb.Create(ctx, &newStudio)
if err != nil {
return err
Expand Down
Loading

0 comments on commit e71fd25

Please sign in to comment.