Commit graph

3253 commits

Author SHA1 Message Date
Stash-KennyG
053e87bd07
Merge f3ef04e4d7 into 46f72e5574 2026-05-05 00:44:11 -04:00
feederbox826
46f72e5574
[docker] bump cuda, node version (#6890)
12.8 was superceded by 12.8.3 and 13 has since been released.

Co-authored-by: feederbox826 <feederbox826@users.noreply.github.com>
2026-05-05 14:03:01 +10:00
Stash-KennyG
3afe29215d
Align release Dockerfiles with Go 1.25 for backend builds. (#6889)
The x86_64 and CUDA backend stages still used golang:1.24.3 while go.mod requires Go 1.25, which broke make docker-build under GOTOOLCHAIN=local. Bump both images to golang:1.25.9 to match docker/compiler/Dockerfile and PR #6869.

Verified with: make docker-build

Fixes https://github.com/stashapp/stash/issues/6887

Co-authored-by: KennyG <kennyg@kennyg.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-05 14:02:33 +10:00
Gykes
db4eabea81
New: Allow Description and Alias on Tag Creation in Scene Tagger (#6872) 2026-05-03 15:32:28 -07:00
KennyG
f3ef04e4d7 Fix CI regressions for default performer gender updates.
Resolve the golangci-lint builtin name conflict and relax scraped performer helper typing so UI type-check passes when scraper gender is string-valued.
2026-05-01 11:05:16 -04:00
KennyG
178124177e Prettier fix
- Updated the type definition in the `withScrapedPerformerDefaultGender` utility function to improve clarity and maintainability.
- Ensured consistency in handling optional gender values for scraped performers.

This change enhances the readability of the code related to default gender assignment during performer data processing.
2026-05-01 11:00:38 -04:00
KennyG
17fe7b1092 Refactor clear behavior in settings.
- Updated GraphQL schema to change `defaultPerformerGender` type to `GenderEnum` and added a new field `clearDefaultPerformerGender` for clearing the setting.
- Modified `applyDefaultPerformerGenderInput` function to accept the new input structure, allowing for clearer handling of gender updates and clearing.
- Enhanced the `SettingsInterfacePanel` to implement the new logic for saving default performer gender, improving user experience when setting or clearing the default gender.

These changes streamline the configuration process and improve the clarity of gender handling in the application.
2026-05-01 09:39:33 -04:00
KennyG
849febc8d3 Update documentation for default performer gender handling.
- Added a section in the Configuration.md to explain the new default performer gender setting and its impact on performer data scraping.
- Updated ScraperDevelopment.md to clarify how the default performer gender is applied when gender is not specified in scraped results.
- Enhanced Scraping.md with details on how the default performer gender setting influences performer scraping.

These changes improve the clarity and usability of the documentation regarding gender handling in the application.
2026-05-01 09:17:30 -04:00
KennyG
01eda04b6f Breakout default gender handling in Module.
- Introduced a new utility function `withScrapedPerformerDefaultGender` to streamline the assignment of default gender when scraping performer data.
- Replaced inline gender handling logic with the new utility function in both scraping results for new and existing performers, improving code readability and maintainability.

This change enhances the clarity of gender assignment logic during performer data scraping.
2026-04-30 19:51:33 -04:00
KennyG
18eedfc724 Enhance default performer gender handling in configuration.
- Added a check for empty string input in `GetDefaultPerformerGender` to return nil if no gender is specified.
- Implemented logging for invalid default performer gender values to improve debugging.

This change ensures that the configuration correctly handles cases where the default performer gender is not set, enhancing the robustness of the application.
2026-04-30 19:49:02 -04:00
KennyG
b23d83f990 Creating handler to clear setting.
`setConfigStrong` is a no op when the input pointer is nul. When the UI sends`null`, for when the user sets the setting back to no default, the old setting is saved.

Was able to confirm this was testing. Selecting "none" in the dropdown keeps the previous setting saved and I think this is the issue.

Built a helper or having the UI send "" instead of null could be possible solutions.

- Updated GraphQL schema to clarify the behavior of `defaultPerformerGender`, allowing an empty string to clear the setting.
- Implemented `applyDefaultPerformerGenderInput` function in the resolver to handle updates and clearing of the default performer gender.
- Adjusted the settings panel to directly pass the value for `defaultPerformerGender`, simplifying the change handling.

Made-with: Cursor
2026-04-30 19:47:45 -04:00
dependabot[bot]
1ec5583931
Bump golang.org/x/image from 0.18.0 to 0.38.0 (#6774)
Bumps [golang.org/x/image](https://github.com/golang/image) from 0.18.0 to 0.38.0.
- [Commits](https://github.com/golang/image/compare/v0.18.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/image
  dependency-version: 0.38.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-29 10:45:36 +10:00
WithoutPants
2b29207f1e
Upgrade go to 1.25.9 and golangci-lint (#6869)
* Bump go version in go.mod
* Update compiler image.

Changed github download url since existing one didn't have version 12 of the SDK.

* Update macOS requirements in README for v0.32.0
* Update lint action
* Bump golangci-lint version
* Migrate golangci-lint config
* Fix QF1012 errors

(Use fmt.Fprintf(...) instead of WriteString(fmt.Sprintf(...)))

* Fix QF1003 errors

(could use tagged switch)

* Fix ST1005 errors

(error string capitalisation)

* Fix ST1011 errors

(seconds suffix)

* Fix QF1006 errors

(lift into loop condition)

* Fix QF1002 errors

(switch condition)

* Fix gocritic error

(deprecated paragraph)

* Fix incorrect nolint directive

* Ignore specific checks

noctx should be addressed in a later PR
---------
Co-authored-by: DogmaDragon <103123951+DogmaDragon@users.noreply.github.com>
Co-authored-by: feederbox826 <me@feederbox.cc>
2026-04-29 10:13:58 +10:00
WithoutPants
98fd0267d0 Update go.sum 2026-04-28 14:01:50 +10:00
dependabot[bot]
3f83a84afb
Bump github.com/antchfx/xpath from 1.3.5 to 1.3.6 (#6763)
Bumps [github.com/antchfx/xpath](https://github.com/antchfx/xpath) from 1.3.5 to 1.3.6.
- [Release notes](https://github.com/antchfx/xpath/releases)
- [Commits](https://github.com/antchfx/xpath/compare/v1.3.5...v1.3.6)

---
updated-dependencies:
- dependency-name: github.com/antchfx/xpath
  dependency-version: 1.3.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-28 13:50:43 +10:00
WithoutPants
af6491a36f
Pnpm dedupe and overrides (#6868)
* Run pnpm dedupe
* Override alerted transitive dependencies
2026-04-28 13:45:45 +10:00
dependabot[bot]
cea3c0383f
Bump lodash-es from 4.17.23 to 4.18.1 in /ui/v2.5 (#6790)
Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1)

---
updated-dependencies:
- dependency-name: lodash-es
  dependency-version: 4.18.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-28 11:50:30 +10:00
dependabot[bot]
2c98ad4d78
Bump vite from 7.3.1 to 7.3.2 in /ui/v2.5 (#6862)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.3.1 to 7.3.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.3.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.3.2/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-28 11:45:31 +10:00
KennyG
38a8ed8122 Apply Prettier formatting for settings gender selector.
Update SettingsInterfacePanel formatting to satisfy UI format-check in CI.

Made-with: Cursor
2026-04-26 15:04:47 -04:00
KennyG
526687a009 Fix Prettier import wrapping in interface settings.
Wrap the config import in SettingsInterfacePanel to satisfy format-check in CI.

Made-with: Cursor
2026-04-26 15:01:04 -04:00
KennyG
1ebb498f11 Fix localization for gender types in SettingsInterfacePanel 2026-04-26 14:52:48 -04:00
KennyG
487c461a75 add default performer gender configuration option
- Introduced `defaultPerformerGender` input and output fields in GraphQL schema.
- Updated configuration resolver to handle default performer gender.
- Implemented logic to use default performer gender when creating new performers or scraping data.
- Added UI component for setting default performer gender in settings panel.
- Updated localization for the new default performer gender option.
2026-04-26 14:52:34 -04:00
Niklas Wagner
103181a6d2
feat: include api key in funscript url (#6760) 2026-04-24 14:59:24 +10:00
WithoutPants
8e070717e5
Optimise table joins (#6648)
* Use inner joins where it makes sense to do so
* Don't trim stash ids
2026-04-24 14:38:11 +10:00
feederbox826
6004ed52af
switch to gosx-notifier fork (#6714)
* switch to gosx-notifier fork
* [ci] add macos bundle
---------
Co-authored-by: feederbox826 <feederbox826@users.noreply.github.com>
2026-04-24 14:33:23 +10:00
(Moai Emoji)
0b811e13b9
Remove empty directories on Clean Generated Files with Blobs (#6749) 2026-04-24 14:29:12 +10:00
feederbox826
083ba25d04
ui package updates sprint 1 (#6777)
* minor package version bumps, remove string.replaceAll polyfill
* update universal-cookie
* bump flag-icons
* [apollo] replace cloneDeep with lodash-es/CloneDeep
* [apollo] partial upgrade to 3.14
* remove dom-screen-wake-lock
* switch videojs-vr library for xvr support. minor bumps
* vite 7
* bump ua-parser-js
* bump postcss
* bump polyfills
* partial bump eslint to v8, otherwise we lose airbnb
* bump typescript to 5.9
* ensure node engine, remove homepage
2026-04-24 14:14:07 +10:00
Gykes
a33cca6033
Fix: Release DB Lock on Large Image Libraries (#6845) 2026-04-23 14:57:53 +10:00
Gykes
22d2dbc46b
Merge pull request #6838 from smith113-p/link
Fix: Correct stash ID links in merge dialogs
2026-04-21 17:11:48 -07:00
DogmaDragon
2c8a0ad192 Add architecture section 2026-04-19 23:48:59 +03:00
Gykes
443de78260
Merge pull request #6802 from stashapp/docs-normalize-manual-headers
Normalize manual headers
2026-04-17 13:40:03 -07:00
smith113-p
ada05a59d0 Format 2026-04-16 20:00:22 -04:00
smith113-p
fb1a548be1 Correct stash ID links in merge dialogs
The <StashIDList/> element hardcoded a link type of "scenes", so the
tag and performer merge dialogs had incorrect links.

Reported in Discord #bugs
2026-04-16 19:55:53 -04:00
Gykes
26cd867a6a
Merge pull request #6773 from stashapp/docs-6673
Document details being searchable field on images
2026-04-13 22:36:43 -07:00
Gykes
f26ae0724b
Merge pull request #6772 from stashapp/docs-6449
Update object fields in scraper documentation
2026-04-13 22:36:29 -07:00
DogmaDragon
4de2351e7c
Clarify caption file naming conventions in documentation (#6821) 2026-04-13 11:03:09 +10:00
WithoutPants
82d12145cc
Fix typo in tag export (#6819) 2026-04-13 10:53:12 +10:00
WithoutPants
968a97aa45 Update changelog 2026-04-10 16:06:29 +10:00
dev-null-life
f920bd8b8e
Fix WebSocket UTF-8 error for non-UTF-8 file paths in subscriptions (#6810)
* Fix WebSocket UTF-8 error for non-UTF-8 file paths in subscriptions

Sanitize log messages and job fields (description, subtasks, error)
before sending over WebSocket. File paths with non-UTF-8 characters
caused the browser to close the connection with "Could not decode a
text frame as UTF-8." Invalid bytes are replaced with U+FFFD.

Only the API response layer is affected — underlying stored data is
unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Replace direct ToValidUTF8 calls to new sanitiseWebsocketString function
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2026-04-10 13:42:42 +10:00
WithoutPants
9b5c0b0e48
Match tag names/aliases exactly when testing uniqueness (#6809)
* Add tagStore.FindByAlias method
* Change tag.ByName and ByAlias to use exact queries instead of fuzzy matching
2026-04-08 13:11:12 +10:00
WithoutPants
034ae1a141
Try to create backup directory during migrate. Log warning on failure (#6808) 2026-04-08 11:30:32 +10:00
smith113-p
3af546db92
Let the stash ID pill shrink in tagger (#6807)
* Let the stash ID pill shrink in tagger

On very narrow viewports (e.g. mobile), the stash ID pill will
overflow its container. With this PR, it will instead limit itself
to the width of the container and display with an ellipsis if
necessary.

Fixes #6786
2026-04-08 10:17:57 +10:00
DogmaDragon
3b90e5191a
Merge branch 'develop' into docs-normalize-manual-headers 2026-04-07 09:42:40 +03:00
WithoutPants
60ce007c02
Show warning when creating parent tag without remote_site_id (#6805) 2026-04-07 16:34:43 +10:00
WithoutPants
f81053ae7d
Reset page when setting filter criteria (#6804)
Fixes sidebar folder filter not resetting page when selecting folders
2026-04-07 16:33:50 +10:00
WithoutPants
98074e3b57
Fix clicking on scene/marker wall item pushing to history twice (#6803) 2026-04-07 16:33:33 +10:00
Gykes
57ddec93e0
Fix: Update Postmigration 84 to Handle De-Duplicate of Folders. (#6792)
* update postmigration to handle deduplicate folders.
* Split post-migration to perform some tasks before the schema migration
* Reparent files and delete duplicate folder if possible
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2026-04-07 16:28:01 +10:00
DogmaDragon
5edd299b10
Clarify scene fingerprint submission details (#6784) 2026-04-07 15:32:53 +10:00
feederbox826
672147deaf
fix memory leak (#6796)
* allow channels to passively drain, empty fileQueue, scanner after scanning
* Prevent job executor retention in subscription channels
---------
Co-authored-by: feederbox826 <feederbox826@users.noreply.github.com>
Co-authored-by: Gykes <Gykes@pm.me>
2026-04-07 09:39:30 +10:00
DogmaDragon
6aaf3fe1b7 Add GitHub Sponsors to Contributing.md 2026-04-07 01:35:46 +03:00