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>
Resolve the golangci-lint builtin name conflict and relax scraped performer helper typing so UI type-check passes when scraper gender is string-valued.
- 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.
- 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.
- 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.
- 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.
- 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.
`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
- 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.
* 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>
* 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
* 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>