pixlstash 1.9.0.dev1__tar.gz → 1.9.0.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (549) hide show
  1. {pixlstash-1.9.0.dev1/pixlstash.egg-info → pixlstash-1.9.0.dev2}/PKG-INFO +2 -2
  2. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/README.md +1 -1
  3. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/frontend/package-lock.json +2 -2
  4. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/frontend/package.json +1 -1
  5. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/auth.py +475 -60
  6. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/authz/registry.py +138 -2
  7. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/database.py +52 -4
  8. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/__init__.py +1 -0
  9. pixlstash-1.9.0.dev2/pixlstash/db_models/mixed_stack.py +186 -0
  10. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/picture.py +113 -12
  11. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/user.py +11 -0
  12. pixlstash-1.9.0.dev2/pixlstash/db_models/user_token.py +80 -0
  13. pixlstash-1.9.0.dev1/pixlstash/frontend/dist/assets/index-DfmnPhUr.css → pixlstash-1.9.0.dev2/pixlstash/frontend/dist/assets/index-56aq9ZK1.css +1 -1
  14. pixlstash-1.9.0.dev2/pixlstash/frontend/dist/assets/index-BGrLWK5W.js +19 -0
  15. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/frontend/dist/index.html +2 -2
  16. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/image_plugins/base.py +14 -6
  17. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/image_plugins/service.py +15 -181
  18. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0082_add_thumbnail_size_level.py +2 -6
  19. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0086_add_operation_log.py +10 -2
  20. pixlstash-1.9.0.dev2/pixlstash/migrations/versions/0086_reissue_api_tokens.py +85 -0
  21. pixlstash-1.9.0.dev2/pixlstash/migrations/versions/0090_add_usertoken_public_id.py +109 -0
  22. pixlstash-1.9.0.dev2/pixlstash/migrations/versions/0091_add_mixed_stack_cohesion_and_dismissal.py +156 -0
  23. pixlstash-1.9.0.dev2/pixlstash/migrations/versions/0092_add_stackcohesion_nearest_edges.py +80 -0
  24. pixlstash-1.9.0.dev2/pixlstash/migrations/versions/0093_invalidate_stackcohesion_inputs.py +72 -0
  25. pixlstash-1.9.0.dev2/pixlstash/migrations/versions/0094_add_telemetry_consent.py +61 -0
  26. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/characters.py +3 -3
  27. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/characters_faces.py +73 -20
  28. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/comfyui.py +2 -5
  29. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/config.py +75 -0
  30. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/dedup.py +1133 -41
  31. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/picture_sets.py +3 -3
  32. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_crud.py +5 -1
  33. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_face_search.py +47 -8
  34. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_helpers.py +22 -9
  35. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_import.py +159 -7
  36. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_listing.py +37 -8
  37. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_misc.py +2 -0
  38. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_search.py +4 -0
  39. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/stacks.py +654 -8
  40. pixlstash-1.9.0.dev2/pixlstash/routes/telemetry.py +137 -0
  41. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/server.py +83 -0
  42. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/comfyui_service.py +14 -62
  43. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/dedup_sweep_service.py +53 -27
  44. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/dedup_tier_service.py +634 -53
  45. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/dedup_verdict_service.py +245 -36
  46. pixlstash-1.9.0.dev2/pixlstash/services/import_dedup_service.py +161 -0
  47. pixlstash-1.9.0.dev2/pixlstash/services/keep_cover_only_service.py +1053 -0
  48. pixlstash-1.9.0.dev2/pixlstash/services/mixed_stack_service.py +1734 -0
  49. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/operation_log_service.py +118 -19
  50. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/project_membership_service.py +5 -1
  51. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/restore/full_restore.py +112 -6
  52. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/review_service.py +4 -1
  53. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/scrapheap_service.py +31 -42
  54. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/set_lock_service.py +357 -20
  55. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/stack_membership.py +49 -7
  56. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/tag_suggestion_service.py +9 -2
  57. pixlstash-1.9.0.dev2/pixlstash/tasks/dedup_scan_task.py +671 -0
  58. pixlstash-1.9.0.dev2/pixlstash/tasks/missing_stack_cohesion_finder.py +51 -0
  59. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_watch_folder_import_finder.py +53 -24
  60. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/picture_import_task.py +101 -10
  61. pixlstash-1.9.0.dev2/pixlstash/tasks/stack_cohesion_task.py +77 -0
  62. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/task_type.py +1 -0
  63. pixlstash-1.9.0.dev2/pixlstash/telemetry/__init__.py +34 -0
  64. pixlstash-1.9.0.dev2/pixlstash/telemetry/install_id.py +315 -0
  65. pixlstash-1.9.0.dev2/pixlstash/telemetry/sender.py +319 -0
  66. pixlstash-1.9.0.dev2/pixlstash/utils/http_cache.py +102 -0
  67. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/query/predicate_filter.py +56 -3
  68. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/request_origin.py +54 -0
  69. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/service/picture_stats.py +2 -0
  70. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/service/user_settings_utils.py +32 -0
  71. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/vault.py +34 -0
  72. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/work_planner.py +6 -0
  73. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2/pixlstash.egg-info}/PKG-INFO +2 -2
  74. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash.egg-info/SOURCES.txt +35 -2
  75. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pyproject.toml +1 -1
  76. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_api_coverage.py +56 -0
  77. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_architecture_guardrails.py +2 -0
  78. pixlstash-1.9.0.dev2/tests/test_auth_read_path.py +493 -0
  79. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_authentication.py +345 -3
  80. pixlstash-1.9.0.dev2/tests/test_character_face_assignment.py +203 -0
  81. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_ci_shards.py +7 -0
  82. pixlstash-1.9.0.dev2/tests/test_comfyui_stack_filter.py +309 -0
  83. pixlstash-1.9.0.dev2/tests/test_database_engine_config.py +129 -0
  84. pixlstash-1.9.0.dev2/tests/test_dedup_mixed_stacks.py +1821 -0
  85. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_dedup_tier_service.py +779 -6
  86. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_dedup_tiers_api.py +328 -7
  87. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_dedup_verdict_service.py +1319 -229
  88. pixlstash-1.9.0.dev2/tests/test_face_score_aggregation.py +131 -0
  89. pixlstash-1.9.0.dev2/tests/test_import_scrapheap_match.py +656 -0
  90. pixlstash-1.9.0.dev2/tests/test_keep_cover_only.py +993 -0
  91. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_likeness_and_face_search.py +103 -0
  92. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_likeness_worker.py +20 -1
  93. pixlstash-1.9.0.dev2/tests/test_migrations.py +975 -0
  94. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_picture_set_locking.py +393 -6
  95. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_picture_sets.py +1 -2
  96. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_pictures_stream.py +112 -1
  97. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_predicate_filter.py +167 -1
  98. pixlstash-1.9.0.dev2/tests/test_repair_copied_face_rows.py +166 -0
  99. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_restore.py +213 -0
  100. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_reviews_api.py +83 -2
  101. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_scrapheap_retention.py +25 -49
  102. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_server_simple.py +3 -2
  103. pixlstash-1.9.0.dev2/tests/test_stack_leader_scope.py +422 -0
  104. pixlstash-1.9.0.dev2/tests/test_stack_state_filter.py +328 -0
  105. pixlstash-1.9.0.dev2/tests/test_stacks_api.py +315 -0
  106. pixlstash-1.9.0.dev2/tests/test_telemetry_install_id.py +329 -0
  107. pixlstash-1.9.0.dev2/tests/test_telemetry_install_id_authz.py +178 -0
  108. pixlstash-1.9.0.dev2/tests/test_telemetry_sender.py +376 -0
  109. pixlstash-1.9.0.dev2/tests/test_thumbnail_cache_headers.py +226 -0
  110. pixlstash-1.9.0.dev2/tests/test_token_identity.py +376 -0
  111. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_watch_folder_worker.py +158 -70
  112. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_workers_api.py +29 -0
  113. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_ws_broadcaster.py +91 -1
  114. pixlstash-1.9.0.dev1/pixlstash/db_models/user_token.py +0 -44
  115. pixlstash-1.9.0.dev1/pixlstash/frontend/dist/assets/index-CI9qOwRB.js +0 -16
  116. pixlstash-1.9.0.dev1/pixlstash/tasks/dedup_scan_task.py +0 -285
  117. pixlstash-1.9.0.dev1/tests/test_migrations.py +0 -419
  118. pixlstash-1.9.0.dev1/tests/test_stacks_api.py +0 -145
  119. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/LICENSE +0 -0
  120. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/MANIFEST.in +0 -0
  121. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/frontend/LICENSE +0 -0
  122. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/LICENSE +0 -0
  123. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/__init__.py +0 -0
  124. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/alembic.ini +0 -0
  125. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/app.py +0 -0
  126. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/authz/__init__.py +0 -0
  127. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/authz/gate.py +0 -0
  128. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/authz/membership.py +0 -0
  129. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/authz/policy.py +0 -0
  130. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/data/anchors/builtin_bad.npy +0 -0
  131. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/data/anchors/builtin_good.npy +0 -0
  132. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/data/anchors/clipiqa_bad.npy +0 -0
  133. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/data/anchors/clipiqa_good.npy +0 -0
  134. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/data/comfyui-workflows/built-in/Flux2-Klein-Image-Edit.json +0 -0
  135. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/data/comfyui-workflows/built-in/Flux2-Klein-t2i.json +0 -0
  136. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/data/comfyui-workflows/built-in/Upscale-2x-RealESRGAN.json +0 -0
  137. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/data/scalar-assets/ScreenshotToken.jpg +0 -0
  138. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/data/scalar-assets/ScreenshotTokens.jpg +0 -0
  139. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/data/scalar-assets/ScreenshotsUserSettings.jpg +0 -0
  140. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/data/scalar-assets/WhereIsUserSettings.jpg +0 -0
  141. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/data/scalar-assets/logo.png +0 -0
  142. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/character.py +0 -0
  143. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/dedup.py +0 -0
  144. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/deleted_file_log.py +0 -0
  145. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/detection.py +0 -0
  146. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/entity_project.py +0 -0
  147. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/face.py +0 -0
  148. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/guest_score.py +0 -0
  149. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/guest_session.py +0 -0
  150. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/import_folder.py +0 -0
  151. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/metadata.py +0 -0
  152. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/operation.py +0 -0
  153. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/picture_likeness.py +0 -0
  154. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/picture_project.py +0 -0
  155. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/picture_set.py +0 -0
  156. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/picture_stack.py +0 -0
  157. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/project.py +0 -0
  158. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/quality.py +0 -0
  159. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/reference_folder.py +0 -0
  160. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/review.py +0 -0
  161. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/snapshot.py +0 -0
  162. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/tag.py +0 -0
  163. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/tag_health.py +0 -0
  164. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/tag_prediction.py +0 -0
  165. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/tag_suggestion.py +0 -0
  166. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/db_models/tagger_run.py +0 -0
  167. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/event_types.py +0 -0
  168. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/frontend/dist/Empty.png +0 -0
  169. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/frontend/dist/EmptyTrash.png +0 -0
  170. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/frontend/dist/Logo.png +0 -0
  171. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/frontend/dist/Watermark.png +0 -0
  172. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/frontend/dist/assets/Tiny5-Regular-WaYIHWdr.ttf +0 -0
  173. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/frontend/dist/assets/materialdesignicons-webfont-B7mPwVP_.ttf +0 -0
  174. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/frontend/dist/assets/materialdesignicons-webfont-CSr8KVlo.eot +0 -0
  175. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/frontend/dist/assets/materialdesignicons-webfont-Dp5v-WZN.woff2 +0 -0
  176. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/frontend/dist/assets/materialdesignicons-webfont-PXm3-2wK.woff +0 -0
  177. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/frontend/dist/favicon.ico +0 -0
  178. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/frontend/dist/vite.svg +0 -0
  179. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/image_loading_dataset_prepper.py +0 -0
  180. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/image_plugins/__init__.py +0 -0
  181. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/image_plugins/built-in/blur_sharpen.py +0 -0
  182. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/image_plugins/built-in/brightness_contrast.py +0 -0
  183. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/image_plugins/built-in/colour_filter.py +0 -0
  184. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/image_plugins/built-in/pixelate.py +0 -0
  185. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/image_plugins/built-in/plugin_template.py +0 -0
  186. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/image_plugins/built-in/rotate.py +0 -0
  187. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/image_plugins/built-in/scaling.py +0 -0
  188. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/image_plugins/registry.py +0 -0
  189. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/inference/__init__.py +0 -0
  190. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/inference/engine.py +0 -0
  191. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/inference/model_lifecycle.py +0 -0
  192. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/inference/vram_budget.py +0 -0
  193. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/inference/workflows/__init__.py +0 -0
  194. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/inference/workflows/clip_embedding.py +0 -0
  195. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/inference/workflows/description.py +0 -0
  196. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/inference/workflows/face_embedding.py +0 -0
  197. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/inference/workflows/tagging.py +0 -0
  198. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/inference/workflows/text_embedding.py +0 -0
  199. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/listeners.py +0 -0
  200. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/maintenance.py +0 -0
  201. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/env.py +0 -0
  202. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/script.py.mako +0 -0
  203. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0001_baseline.py +0 -0
  204. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0002_add_text_score.py +0 -0
  205. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0003_add_original_file_name.py +0 -0
  206. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0004_add_comfyui_fields.py +0 -0
  207. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0005_add_projects.py +0 -0
  208. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0006_add_attachment_url.py +0 -0
  209. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0007_add_picture_project_id.py +0 -0
  210. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0008_add_compact_mode.py +0 -0
  211. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0009_add_picture_project_membership.py +0 -0
  212. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0010_project_name_uniqueness.py +0 -0
  213. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0011_pictureset_name_uniqueness.py +0 -0
  214. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0012_character_name_uniqueness.py +0 -0
  215. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0013_tag_prediction.py +0 -0
  216. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0014_tag_prediction_composite_index.py +0 -0
  217. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0015_tag_prediction_model_version_rename.py +0 -0
  218. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0016_tag_prediction_confirm_applied.py +0 -0
  219. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0017_anomaly_tag_uncertainty.py +0 -0
  220. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0018_anomaly_tag_uncertainty_disagreement.py +0 -0
  221. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0019_pending_character_id.py +0 -0
  222. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0020_source_picture_id.py +0 -0
  223. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0021_tagger_enabled_flags.py +0 -0
  224. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0022_add_check_for_updates.py +0 -0
  225. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0023_add_show_keyboard_hint.py +0 -0
  226. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0024_add_deleted_file_log.py +0 -0
  227. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0025_add_reference_folders.py +0 -0
  228. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0026_add_caption_file_and_sync_captions.py +0 -0
  229. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0027_add_caption_file_mtime.py +0 -0
  230. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0028_add_smart_score.py +0 -0
  231. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0029_add_import_excluded_to_picture.py +0 -0
  232. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0030_add_import_folders.py +0 -0
  233. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0031_migrate_watch_folders_to_import_folder.py +0 -0
  234. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0032_add_reference_folder_host_path.py +0 -0
  235. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0033_add_import_folder_host_path.py +0 -0
  236. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0034_add_token_scope_fields.py +0 -0
  237. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0035_drop_face_quality.py +0 -0
  238. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0036_add_token_include_attachments.py +0 -0
  239. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0037_add_user_public_url.py +0 -0
  240. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0038_add_watermark_fields.py +0 -0
  241. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0039_drop_color_histogram.py +0 -0
  242. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0040_move_text_score_to_picture.py +0 -0
  243. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0041_guest_scores.py +0 -0
  244. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0042_guest_session_cookie_token.py +0 -0
  245. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0043_pictureset_icon_color.py +0 -0
  246. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0044_add_grid_sort_indexes.py +0 -0
  247. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0045_tagger_settings.py +0 -0
  248. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0046_tag_sentinel_rename.py +0 -0
  249. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0047_add_stack_leader_grid_indexes.py +0 -0
  250. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0048_normalize_stack_positions.py +0 -0
  251. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0049_snapshots.py +0 -0
  252. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0050_reset_metadata_hash_membership.py +0 -0
  253. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0051_deleted_file_log_path_sha.py +0 -0
  254. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0052_drop_import_excluded_sentinel.py +0 -0
  255. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0053_add_face_model_pack.py +0 -0
  256. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0054_add_sidebar_docked.py +0 -0
  257. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0055_add_sidebar_width.py +0 -0
  258. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0056_add_hide_purge_snapshot_warning.py +0 -0
  259. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0057_split_caption_sidecars.py +0 -0
  260. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0058_add_tag_suggestion.py +0 -0
  261. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0059_add_tagger_run.py +0 -0
  262. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0060_tag_prediction_label_ledger.py +0 -0
  263. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0061_add_detection.py +0 -0
  264. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0062_recompute_smart_score_calibrated_anomaly.py +0 -0
  265. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0063_rename_pixelated_tag_to_blocky.py +0 -0
  266. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0064_add_sidebar_pinned.py +0 -0
  267. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0065_add_review_sessions.py +0 -0
  268. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0066_add_tag_health.py +0 -0
  269. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0067_add_tag_health_precision_adj.py +0 -0
  270. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0068_add_picture_split.py +0 -0
  271. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0069_add_tag_eval_slice.py +0 -0
  272. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0070_add_tag_health_eval_candidate_n_pos.py +0 -0
  273. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0071_remove_tag_review_scoring_subsystem.py +0 -0
  274. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0072_add_review_receipt_snapshot_and_suggestion_prior_decision.py +0 -0
  275. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0073_add_pictureset_locked.py +0 -0
  276. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0074_recompute_tag_health_exclude_human_decisions.py +0 -0
  277. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0075_add_tag_health_ground_truth.py +0 -0
  278. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0076_recompute_smart_score_after_stale_tag_edits.py +0 -0
  279. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0077_add_deleted_file_log_file_removed.py +0 -0
  280. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0078_add_reference_folder_pending_reimport.py +0 -0
  281. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0079_add_picture_deleted_at.py +0 -0
  282. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0080_add_thumbnail_dimensions.py +0 -0
  283. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0083_recompute_smart_score_unapplied_anomaly_predictions.py +0 -0
  284. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0084_recompute_smart_score_rebalanced_weights.py +0 -0
  285. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0085_recompute_smart_score_restored_builtin_anchors.py +0 -0
  286. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0087_add_entity_project_membership.py +0 -0
  287. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0088_add_dedup_tier_tables.py +0 -0
  288. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/migrations/versions/0089_add_dedupverdict_reopen_batch_id.py +0 -0
  289. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/openapi_custom.py +0 -0
  290. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/picture_scoring.py +0 -0
  291. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/pixl_logging.py +0 -0
  292. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/route_inventory.py +0 -0
  293. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/__init__.py +0 -0
  294. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/_helpers.py +0 -0
  295. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/filesystem.py +0 -0
  296. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/guest_scores.py +0 -0
  297. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/import_folders.py +0 -0
  298. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/operations.py +0 -0
  299. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/__init__.py +0 -0
  300. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_anomaly.py +0 -0
  301. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_character_likeness.py +0 -0
  302. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_export.py +0 -0
  303. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_faces.py +0 -0
  304. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_likeness_search.py +0 -0
  305. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_serving.py +0 -0
  306. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/pictures/_thumbnails.py +0 -0
  307. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/projects.py +0 -0
  308. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/reference_folders.py +0 -0
  309. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/reviews.py +0 -0
  310. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/share.py +0 -0
  311. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/snapshots.py +0 -0
  312. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/tag_health.py +0 -0
  313. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/tag_predictions.py +0 -0
  314. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/tag_suggestions.py +0 -0
  315. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/tagger_runs.py +0 -0
  316. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/taggers.py +0 -0
  317. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/tags.py +0 -0
  318. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/routes/test_hooks.py +0 -0
  319. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/scoring/__init__.py +0 -0
  320. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/scoring/character_likeness.py +0 -0
  321. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/scoring/smart_score.py +0 -0
  322. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/__init__.py +0 -0
  323. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/comfyui_recipe_service.py +0 -0
  324. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/config_service.py +0 -0
  325. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/impossible_tag_clear_service.py +0 -0
  326. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/impossible_tag_scan_service.py +0 -0
  327. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/picture_service.py +0 -0
  328. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/plugin_service.py +0 -0
  329. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/restore/__init__.py +0 -0
  330. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/restore/_models.py +0 -0
  331. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/restore/preview.py +0 -0
  332. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/restore/resource_restore.py +0 -0
  333. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/restore/schema_upgrade.py +0 -0
  334. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/restore_service.py +0 -0
  335. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/search_query_service.py +0 -0
  336. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/share_service.py +0 -0
  337. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/snapshot_service.py +0 -0
  338. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/tag_health_service.py +0 -0
  339. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/tag_prediction_service.py +0 -0
  340. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/tag_scan_service.py +0 -0
  341. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/services/tagger_run_service.py +0 -0
  342. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/ssl_setup.py +0 -0
  343. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/stacking.py +0 -0
  344. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/startup_checks.py +0 -0
  345. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tagger_plugins/__init__.py +0 -0
  346. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tagger_plugins/base.py +0 -0
  347. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tagger_plugins/clip_service.py +0 -0
  348. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tagger_plugins/florence2.py +0 -0
  349. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tagger_plugins/joycaption.py +0 -0
  350. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tagger_plugins/pixlstash_tagger.py +0 -0
  351. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tagger_plugins/registry.py +0 -0
  352. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tagger_plugins/sbert.py +0 -0
  353. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tagger_plugins/wd14.py +0 -0
  354. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/task_runner.py +0 -0
  355. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/__init__.py +0 -0
  356. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/base_task.py +0 -0
  357. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/base_task_finder.py +0 -0
  358. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/comfyui_extraction_task.py +0 -0
  359. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/dedup_scan_finder.py +0 -0
  360. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/description_task.py +0 -0
  361. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/detection_task.py +0 -0
  362. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/ensure_gfs_snapshot_finder.py +0 -0
  363. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/ensure_gfs_snapshot_task.py +0 -0
  364. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/face_detection_task.py +0 -0
  365. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/face_extraction_task.py +0 -0
  366. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/face_model_refresh_task.py +0 -0
  367. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/image_embedding_task.py +0 -0
  368. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/likeness_parameters_task.py +0 -0
  369. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/likeness_task.py +0 -0
  370. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_comfyui_extraction_finder.py +0 -0
  371. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_description_finder.py +0 -0
  372. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_face_extraction_finder.py +0 -0
  373. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_face_model_refresh_finder.py +0 -0
  374. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_file_purge_finder.py +0 -0
  375. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_file_purge_task.py +0 -0
  376. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_image_embedding_finder.py +0 -0
  377. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_likeness_finder.py +0 -0
  378. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_likeness_parameters_finder.py +0 -0
  379. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_pixel_sha_finder.py +0 -0
  380. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_quality_finder.py +0 -0
  381. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_smart_score_finder.py +0 -0
  382. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_source_face_likeness_finder.py +0 -0
  383. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_tag_finder.py +0 -0
  384. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_tag_prediction_finder.py +0 -0
  385. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_text_embedding_finder.py +0 -0
  386. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_text_score_finder.py +0 -0
  387. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/missing_thumbnail_finder.py +0 -0
  388. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/pixel_sha_task.py +0 -0
  389. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/quality_task.py +0 -0
  390. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/reference_folder_scan_finder.py +0 -0
  391. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/reference_folder_scan_task.py +0 -0
  392. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/scrapheap_retention_purge_finder.py +0 -0
  393. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/scrapheap_retention_purge_task.py +0 -0
  394. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/smart_score_task.py +0 -0
  395. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/source_face_likeness_task.py +0 -0
  396. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/tag_health_auto_rebuild_finder.py +0 -0
  397. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/tag_health_auto_rebuild_task.py +0 -0
  398. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/tag_health_rebuild_task.py +0 -0
  399. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/tag_prediction_backfill_task.py +0 -0
  400. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/tag_task.py +0 -0
  401. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/text_embedding_task.py +0 -0
  402. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/text_score_task.py +0 -0
  403. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/thumbnail_generation_task.py +0 -0
  404. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/tasks/watch_folder_import_task.py +0 -0
  405. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/__init__.py +0 -0
  406. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/atomic_write.py +0 -0
  407. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/caption_file_utils.py +0 -0
  408. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/comfyui_utilities.py +0 -0
  409. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/face_tags.py +0 -0
  410. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/host_path_utils.py +0 -0
  411. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/image_processing/__init__.py +0 -0
  412. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/image_processing/face_utils.py +0 -0
  413. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/image_processing/image_utils.py +0 -0
  414. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/image_processing/video_utils.py +0 -0
  415. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/insightface_batched.py +0 -0
  416. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/insightface_model_utils.py +0 -0
  417. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/likeness/__init__.py +0 -0
  418. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/likeness/likeness_parameter_utils.py +0 -0
  419. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/likeness/likeness_utils.py +0 -0
  420. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/model_utils.py +0 -0
  421. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/near_neighbor.py +0 -0
  422. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/path_mapper.py +0 -0
  423. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/path_utils.py +0 -0
  424. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/quality/__init__.py +0 -0
  425. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/quality/anomaly_penalty.py +0 -0
  426. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/quality/quality_utils.py +0 -0
  427. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/quality/smart_score_utils.py +0 -0
  428. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/query/__init__.py +0 -0
  429. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/rate_limiter.py +0 -0
  430. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/reference_folder_validator.py +0 -0
  431. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/reference_folder_watcher.py +0 -0
  432. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/serialization_utils.py +0 -0
  433. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/service/__init__.py +0 -0
  434. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/service/anomaly_thresholds.py +0 -0
  435. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/service/caption_utils.py +0 -0
  436. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/service/export_utils.py +0 -0
  437. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/service/filter_helpers.py +0 -0
  438. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/service/label_ledger.py +0 -0
  439. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/service/person_tags.py +0 -0
  440. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/service/scope_table.py +0 -0
  441. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/service/smart_score_invalidation.py +0 -0
  442. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/service/tag_prediction_utils.py +0 -0
  443. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/snapshot_compression.py +0 -0
  444. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/stack/__init__.py +0 -0
  445. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/stack/stack_utils.py +0 -0
  446. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/system_utils.py +0 -0
  447. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/unprocessable_image_registry.py +0 -0
  448. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/vram_utils.py +0 -0
  449. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/utils/watermark.py +0 -0
  450. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/worker_config.py +0 -0
  451. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/ws/__init__.py +0 -0
  452. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash/ws/broadcaster.py +0 -0
  453. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash.egg-info/dependency_links.txt +0 -0
  454. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash.egg-info/entry_points.txt +0 -0
  455. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash.egg-info/requires.txt +0 -0
  456. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/pixlstash.egg-info/top_level.txt +0 -0
  457. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/setup.cfg +0 -0
  458. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/setup.py +0 -0
  459. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_anomaly_penalty.py +0 -0
  460. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_anomaly_region_scope.py +0 -0
  461. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_anomaly_thresholds_cache.py +0 -0
  462. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_async_import_staging.py +0 -0
  463. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_authz_gate_step3.py +0 -0
  464. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_authz_gate_step4.py +0 -0
  465. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_authz_host_capability_16_3.py +0 -0
  466. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_backend_order_stability.py +0 -0
  467. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_batch_apply_scores.py +0 -0
  468. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_batch_character_likeness_scope.py +0 -0
  469. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_build_desktop_runtime.py +0 -0
  470. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_characters_api.py +0 -0
  471. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_clip_text_embedding_similarity.py +0 -0
  472. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_comfyui_api_prompt_extraction.py +0 -0
  473. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_comfyui_recipe_preflight.py +0 -0
  474. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_comfyui_recipe_route.py +0 -0
  475. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_comfyui_submit_prompt.py +0 -0
  476. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_comfyui_workflow_extraction.py +0 -0
  477. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_dedup_sweep_api.py +0 -0
  478. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_dedup_sweep_service.py +0 -0
  479. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_default_device_override.py +0 -0
  480. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_detection_florence.py +0 -0
  481. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_detection_model.py +0 -0
  482. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_detections_scope.py +0 -0
  483. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_docker_windows_host_paths.py +0 -0
  484. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_except_hygiene_guardrail.py +0 -0
  485. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_export_api.py +0 -0
  486. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_face_detection_extreme_aspect_ratio.py +0 -0
  487. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_face_extraction_speed.py +0 -0
  488. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_facial_features_worker.py +0 -0
  489. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_find_orphaned_files.py +0 -0
  490. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_florence.py +0 -0
  491. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_florence_model_variant.py +0 -0
  492. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_full_pipeline.py +0 -0
  493. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_gfs_snapshot_schedule.py +0 -0
  494. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_guest_scoring.py +0 -0
  495. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_image_embedding_worker.py +0 -0
  496. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_image_plugins_api.py +0 -0
  497. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_impossible_clear.py +0 -0
  498. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_impossible_clear_authz.py +0 -0
  499. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_impossible_filter.py +0 -0
  500. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_insightface_model_pack.py +0 -0
  501. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_invalid_image_endless_retry.py +0 -0
  502. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_ip_locality_fail_closed.py +0 -0
  503. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_justified_thumbnails.py +0 -0
  504. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_label_ledger.py +0 -0
  505. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_many_to_many_face_data.py +0 -0
  506. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_metadata_hash.py +0 -0
  507. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_multi_project_membership_authz.py +0 -0
  508. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_near_neighbor.py +0 -0
  509. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_openapi_response_schemas.py +0 -0
  510. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_operation_log.py +0 -0
  511. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_person_tags.py +0 -0
  512. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_picture_mutation_scope.py +0 -0
  513. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_picture_plugins.py +0 -0
  514. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_picture_stack_utils.py +0 -0
  515. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_project_membership_service.py +0 -0
  516. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_projects_api.py +0 -0
  517. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_quality_task_shutdown.py +0 -0
  518. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_rate_limiter.py +0 -0
  519. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_read_token_security.py +0 -0
  520. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_reference_folder_listing_count_parity.py +0 -0
  521. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_reference_folder_sidecars.py +0 -0
  522. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_rocm_device_check.py +0 -0
  523. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_scope_table.py +0 -0
  524. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_score_agreement_stats.py +0 -0
  525. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_server.py +0 -0
  526. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_server_external_listener.py +0 -0
  527. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_smart_score_consistency.py +0 -0
  528. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_smart_score_invalidation.py +0 -0
  529. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_snapshot_compression.py +0 -0
  530. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_snapshots.py +0 -0
  531. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_snapshots_auth.py +0 -0
  532. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_ssl_generation.py +0 -0
  533. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_stack_position_invariant.py +0 -0
  534. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_stacks_membership.py +0 -0
  535. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_startup_banner_encoding.py +0 -0
  536. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_stats_api.py +0 -0
  537. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_tag_health_api.py +0 -0
  538. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_tag_prediction_backfill.py +0 -0
  539. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_tag_prediction_scope.py +0 -0
  540. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_tag_predictions_api.py +0 -0
  541. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_tag_suggestions_api.py +0 -0
  542. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_tag_task.py +0 -0
  543. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_tag_worker.py +0 -0
  544. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_tagger_plugin_registry.py +0 -0
  545. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_tagger_runs_api.py +0 -0
  546. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_user_settings_tagger_settings.py +0 -0
  547. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_vram_batch_budget.py +0 -0
  548. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_websocket_auth.py +0 -0
  549. {pixlstash-1.9.0.dev1 → pixlstash-1.9.0.dev2}/tests/test_work_planner.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pixlstash
3
- Version: 1.9.0.dev1
3
+ Version: 1.9.0.dev2
4
4
  Summary: Self-hosted picture library with AI tagging, semantic search, and a clean web UI
5
5
  Author-email: Gaute Lindkvist <lindkvis@gmail.com>
6
6
  License-Expression: GPL-3.0-only AND MIT
@@ -112,7 +112,7 @@ PixlStash is a tool for working with images rather than just storing them, thoug
112
112
  <img src="website/assets/install-banner.svg" alt="Install PixlStash" width="320"/>
113
113
  </a>
114
114
  &nbsp;
115
- <a href="https://demo.pixlstash.dev?token=MWPcUXbn2pRCt-RKYsRsDnkaC6EANar794qXaLwlQwE">
115
+ <a href="https://demo.pixlstash.dev?token=o75qQ-w0fy_FraPb2sdxcGOVTBoKFmmZwStycljomSs">
116
116
  <img src="website/assets/demo-banner.svg" alt="Try the Demo" width="320"/>
117
117
  </a>
118
118
  </p>
@@ -37,7 +37,7 @@ PixlStash is a tool for working with images rather than just storing them, thoug
37
37
  <img src="website/assets/install-banner.svg" alt="Install PixlStash" width="320"/>
38
38
  </a>
39
39
  &nbsp;
40
- <a href="https://demo.pixlstash.dev?token=MWPcUXbn2pRCt-RKYsRsDnkaC6EANar794qXaLwlQwE">
40
+ <a href="https://demo.pixlstash.dev?token=o75qQ-w0fy_FraPb2sdxcGOVTBoKFmmZwStycljomSs">
41
41
  <img src="website/assets/demo-banner.svg" alt="Try the Demo" width="320"/>
42
42
  </a>
43
43
  </p>
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pixlstash-frontend",
3
- "version": "1.9.0-dev.1",
3
+ "version": "1.9.0-dev.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pixlstash-frontend",
9
- "version": "1.9.0-dev.1",
9
+ "version": "1.9.0-dev.2",
10
10
  "dependencies": {
11
11
  "@mdi/font": "^7.4.47",
12
12
  "axios": "^1.18.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pixlstash-frontend",
3
3
  "private": true,
4
- "version": "1.9.0-dev.1",
4
+ "version": "1.9.0-dev.2",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",