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 >
latest_develop
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
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
0ed2992a72
Fix typo in the manual ( #6771 )
2026-03-31 18:23:40 +11:00
DogmaDragon
e6e87d64d6
Add troubleshooting mode confirmation to bug report
...
Added a checkbox to confirm troubleshooting mode is enabled before filing a bug report.
2026-03-30 11:53:30 +03:00
WithoutPants
2da8074316
Codeberg weblate translation update ( #6767 )
...
* Translated using Weblate (French)
Currently translated at 100.0% (1341 of 1341 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/fr/
* Translated using Weblate (Turkish)
Currently translated at 75.3% (1010 of 1341 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/tr/
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (1341 of 1341 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/uk/
* Translated using Weblate (French)
Currently translated at 99.9% (1345 of 1346 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/fr/
* Translated using Weblate (Korean)
Currently translated at 100.0% (1346 of 1346 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/ko/
* Translated using Weblate (French)
Currently translated at 100.0% (1346 of 1346 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/fr/
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (1346 of 1346 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/uk/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1346 of 1346 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/zh_Hans/
* Translated using Weblate (Portuguese (Brazil))
Currently translated at 67.3% (906 of 1346 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/pt_BR/
* 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 (French)
Currently translated at 100.0% (1348 of 1348 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/fr/
* Translated using Weblate (Czech)
Currently translated at 100.0% (1351 of 1351 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/cs/
* Translated using Weblate (Spanish)
Currently translated at 100.0% (1351 of 1351 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/es/
* Translated using Weblate (Korean)
Currently translated at 100.0% (1351 of 1351 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/ko/
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (1351 of 1351 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/uk/
* Translated using Weblate (French)
Currently translated at 100.0% (1351 of 1351 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/fr/
* Translated using Weblate (Spanish)
Currently translated at 100.0% (1351 of 1351 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/es/
* Translated using Weblate (Arabic)
Currently translated at 56.9% (769 of 1351 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/ar/
* Translated using Weblate (Polish)
Currently translated at 80.1% (1083 of 1351 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/pl/
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (1351 of 1351 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/uk/
* Translated using Weblate (Arabic)
Currently translated at 58.0% (784 of 1351 strings)
Translation: stash/stash
Translate-URL: https://translate.codeberg.org/projects/stash/stash/ar/
---------
Co-authored-by: doodoo <doodoo@noreply.codeberg.org >
Co-authored-by: slickdaddy <slickdaddy@noreply.codeberg.org >
Co-authored-by: Saenko <saenko@noreply.codeberg.org >
Co-authored-by: lugged9922 <lugged9922@noreply.codeberg.org >
Co-authored-by: wql219 <wql219@noreply.codeberg.org >
Co-authored-by: tiagodamian <tiagodamian@noreply.codeberg.org >
Co-authored-by: Codeberg Translate <translate@codeberg.org >
Co-authored-by: NymeriaCZ <nymeriacz@noreply.codeberg.org >
Co-authored-by: donlothario <donlothario@noreply.codeberg.org >
Co-authored-by: gallegonovato <gallegonovato@noreply.codeberg.org >
Co-authored-by: interj4 <interj4@noreply.codeberg.org >
Co-authored-by: brnd <brnd@noreply.codeberg.org >
v0.31.0
2026-03-30 12:26:04 +11:00
WithoutPants
b70922488b
Update changelog
2026-03-30 11:57:28 +11:00
WithoutPants
0d9ad38bfe
Clear search results and states from taggers when source changes ( #6766 )
2026-03-30 11:43:39 +11:00
WithoutPants
a4b0a7a194
Exclude source objects from destination select and vice versa in merge dialogs ( #6764 )
...
* Add excludeIDs to PerformerSelect
* Exclude src from dest select and vice versa in merge dialogs
2026-03-30 11:43:06 +11:00
(Moai Emoji)
e755b2c24c
guard heatmap display on interactive_speed ( #6746 )
2026-03-30 11:38:46 +11:00
(Moai Emoji)
48ba26e17b
Allow unicode characters when stripping filenames for json export ( #6748 )
2026-03-30 11:38:20 +11:00
(Moai Emoji)
1e0b9902a3
Fix lightbox not reading scale-up setting from config ( #6743 )
2026-03-30 11:18:45 +11:00
smith113-p
0a4b427e1d
Show stash-box name in studio/performer tagger ( #6759 )
2026-03-30 11:09:17 +11:00
smith113-p
86188e5ff7
Use StashIDPill for displaying the scraped stash ID ( #6761 )
...
This is more consistent with other places that stash IDs are shown,
simplifies the code a bit, and lets you see at a glance which stash
box is being used.
2026-03-30 11:07:04 +11:00
eb2292
fe2a8eb0fd
Add keyboard shortcut "d d" to delete scene ( #6755 )
...
Co-authored-by: DogmaDragon <103123951+DogmaDragon@users.noreply.github.com >
2026-03-30 11:04:10 +11:00
feederbox826
af07fea289
[CI] add vips-heif ( #6765 )
2026-03-30 10:57:16 +11:00
(Moai Emoji)
8af2cfe525
Add mutex to repositoryCache for thread safety ( #6741 )
...
* Add mutex to package cache to prevent concurrent map write crash
* use sync.Once for cache init
2026-03-30 09:09:28 +11:00
Gykes
020c242ea6
Fix: Remove padFuzzyDate From Performer ( #6757 )
2026-03-30 09:07:54 +11:00
(Moai Emoji)
c861d3991a
Fix 'not equals' custom field to include unset objects ( #6742 )
...
* Fix custom field 'not equals' to include unset objects
* also fix Excludes and NotBetween null handling
2026-03-26 09:01:43 +11:00
DogmaDragon
eeee081eb7
Refactor README.md for better clarity and structure
2026-03-25 13:36:31 +02:00
WithoutPants
fd480c5a3e
Exclude zip folders when browsing scenes and galleries ( #6740 )
...
* Add short cuts when only getting zip/folder ids
* Don't show zip folders when viewing scenes and galleries.
Zip folders have no results for scenes and galleries, but will for images.
2026-03-24 15:03:58 +11:00
WithoutPants
2e48dbfc63
Update changelog
2026-03-23 17:32:30 +11:00
WithoutPants
87eabf0871
Show studio name if studio image not set on detail pages ( #6716 )
...
* Add StudioLogo component
If no studio image is set, shows the studio icon with the studio name.
* Add option to always show studio text
* Implement studio as text option
* Add studio logo to image
* Clarify existing show studio as text option
2026-03-23 17:13:34 +11:00
WithoutPants
b4c7ad4b81
Match exact tag names for batch tagger and show exact matches first for query ( #6739 )
...
* Enforce exact name matching for tag batch tagger
* Sort exact matches first for tag stashbox query
2026-03-23 16:29:49 +11:00
Gykes
e0f2c8e96d
FR: Auto Tag Confirmation Modal ( #6735 )
...
* Improve folder list styling
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com >
2026-03-23 16:16:59 +11:00
WithoutPants
c5034422cb
Expand folder select hierarchy based on initial selected folder ( #6738 )
...
* Add sub_folders field to Folder type
* Expand folder select for the initial value
2026-03-23 16:15:23 +11:00
WithoutPants
c9d0afee56
Fix tagger modal issues ( #6736 )
...
* Make modal field/value styling consistent
Fixes URL list in studio list styling
* Add stash id pill to studio and tag modals
* Fix create parent check box
* Allow excluding parent studio
Disabled the create checkbox if parent studio is not excluded and does not exist.
* Don't render modal on every studio
* Show dialog when refreshing tags
2026-03-23 16:14:25 +11:00
feederbox826
3dbb0fcfc9
[hwaccel] add envvar for /dev/dri device ( #6728 )
2026-03-23 16:10:22 +11:00
WithoutPants
2bb1df8443
Fix incorrect where clause for gallery parent folder filter ( #6737 )
2026-03-23 13:45:31 +11:00
WithoutPants
feb4346e13
Maintain sub-folders selection when reselecting folder in filter
2026-03-23 12:31:48 +11:00
feederbox826
11f9e7ac51
[ci] add macos bundle ( #6727 )
2026-03-23 09:07:47 +11:00
feederbox826
b11be4807a
fetch full depth of git history for compiler ( #6726 )
...
[ci] run generate with fetch depth
2026-03-23 09:07:13 +11:00
DogmaDragon
7a18b5310b
Add GitHub Sponsors and forum links to about section ( #6718 )
...
* Add GitHub sponsors link to about section
* Add forum link to about section
* Fix casing in 'latest_version_build_hash' string in localization file
2026-03-23 09:06:20 +11:00
feederbox826
865c50d615
[ui] Fix Tag Modal cutting off ( #6734 )
2026-03-23 09:02:38 +11:00
feederbox826
c832e1a8a2
remove phasher target from bundle ( #6717 ) [skip ci]
2026-03-19 18:31:14 +11:00
WithoutPants
ee9a852ec9
Remove phasher from build target [skip ci]
2026-03-19 16:35:12 +11:00
feederbox826
640d62cf59
[CI] ensure artifacts have +x bit set ( #6715 )
2026-03-19 15:10:04 +11:00
WithoutPants
58cf6307cb
Update changelog
2026-03-19 13:59:42 +11:00
feederbox826
79b6cb6fd2
Lint + build update and retooling ( #6638 )
...
* update compiler and build process
- assemble cross-builds in multi-build steps
- clean up unnecessary dependences
- use node docker image instead of nodesource (unsupported)
- downgrade to freebsd12 to match compiler
Co-authored-by: Gykes <Gykes@pm.me >
* [compiler] use new image instead of placeholder
removes .gitignore, update README
* [CI] lock pnpm action-setup to SHA hash
* bump @actions/upload-artifact
---------
Co-authored-by: feederbox826 <feederbox826@users.noreply.github.com >
Co-authored-by: Gykes <Gykes@pm.me >
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com >
2026-03-19 13:36:58 +11:00
WithoutPants
18eda31933
Make tagger views consistent ( #6713 )
...
* Show performer/studio tagger when no results
* Separate stash-box selector and config buttons
2026-03-19 13:35:18 +11:00
WithoutPants
5fd0d7bd68
Make hover volume configurable ( #6712 )
2026-03-19 13:16:20 +11:00
WithoutPants
c583e88caf
Replace "Source" with "Combined" in merge dialogs ( #6711 )
2026-03-19 12:10:42 +11:00
Stash-KennyG
4167224107
Feature: Add StashID guid consideration into select boxes ( #6709 )
...
* Add GUID search for performers in PerformerSelect component
* Refactor and apply to all objects with stash ids
---------
Co-authored-by: KennyG <kennyg@kennyg.com >
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com >
2026-03-19 11:03:36 +11:00