kryten-webqueue 0.38.2__tar.gz → 0.38.3__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 (170) hide show
  1. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/CHANGELOG.md +25 -0
  2. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/PKG-INFO +1 -1
  3. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/static/css/main.css +41 -47
  4. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/auth/login.html +2 -0
  5. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/pyproject.toml +1 -1
  6. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/.github/workflows/gitleaks.yml +0 -0
  7. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/.github/workflows/python-publish.yml +0 -0
  8. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/.github/workflows/release.yml +0 -0
  9. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/.gitignore +0 -0
  10. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/.gitleaks.toml +0 -0
  11. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/.pre-commit-config.yaml +0 -0
  12. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/AGENT-WORKFLOW-GUIDE.md +0 -0
  13. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/AGENTS.md +0 -0
  14. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/README.md +0 -0
  15. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/config.example.json +0 -0
  16. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/deploy/kryten-webqueue.service +0 -0
  17. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/deploy/nginx-queue.conf +0 -0
  18. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/IMPLEMENTATION_SPEC.md +0 -0
  19. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/IMPL_API_GATE.md +0 -0
  20. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/IMPL_ECONOMY.md +0 -0
  21. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/IMPL_KRYTEN_PY.md +0 -0
  22. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/IMPL_ROBOT.md +0 -0
  23. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/Kryten-Economy Service Quality Survey Report at v0.13.0.md +0 -0
  24. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/Kryten-Webqueue Service Quality Survey Report at v0.27.1.md +0 -0
  25. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/Log for incorrect promo insertion problem.txt +0 -0
  26. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/PLAN_PRESENCE_AND_PROMOS.md +0 -0
  27. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/PRE_PLAN_GAPS.md +0 -0
  28. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/PRODUCT_PLAN.md +0 -0
  29. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/SPEC-Visual-UX-Sprint-August-2026.md +0 -0
  30. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/SPEC_ADMIN_ITEM_EDITOR.md +0 -0
  31. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/SPEC_CATALOG_ENRICHMENT_PIPELINE.md +0 -0
  32. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/SPEC_EMOTE_REHOST.md +0 -0
  33. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/SPEC_JOBS_AND_BROWSE.md +0 -0
  34. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/docs/UX_POLISH_PLAN.md +0 -0
  35. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/__init__.py +0 -0
  36. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/__main__.py +0 -0
  37. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/api_gate/__init__.py +0 -0
  38. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/api_gate/client.py +0 -0
  39. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/app.py +0 -0
  40. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/auth/__init__.py +0 -0
  41. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/auth/otp.py +0 -0
  42. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/auth/rate_limit.py +0 -0
  43. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/auth/session.py +0 -0
  44. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/__init__.py +0 -0
  45. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/db/__init__.py +0 -0
  46. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/db/_catalog.py +0 -0
  47. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/db/_connection.py +0 -0
  48. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/db/_enrichment.py +0 -0
  49. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/db/_feedback.py +0 -0
  50. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/db/_people.py +0 -0
  51. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/db/_playlists.py +0 -0
  52. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/db/_queue.py +0 -0
  53. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/db/_watchlist.py +0 -0
  54. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/__init__.py +0 -0
  55. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/classify.py +0 -0
  56. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/normalise.py +0 -0
  57. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/pipeline.py +0 -0
  58. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/providers.py +0 -0
  59. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/report.py +0 -0
  60. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/steps/__init__.py +0 -0
  61. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/steps/art.py +0 -0
  62. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/steps/categories.py +0 -0
  63. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/steps/meta.py +0 -0
  64. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/steps/sync.py +0 -0
  65. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/steps/tags.py +0 -0
  66. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/enrichment/steps/title.py +0 -0
  67. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/images.py +0 -0
  68. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/mediacms.py +0 -0
  69. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/catalog/sync.py +0 -0
  70. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/config.py +0 -0
  71. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/integrations/__init__.py +0 -0
  72. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/integrations/cmsutils/__init__.py +0 -0
  73. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/integrations/cmsutils/_common.py +0 -0
  74. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/integrations/cmsutils/enrichmeta.py +0 -0
  75. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/integrations/cmsutils/enrichtitles.py +0 -0
  76. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/integrations/cmsutils/enrichtv.py +0 -0
  77. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/integrations/cmsutils/fetchurls.py +0 -0
  78. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/integrations/cmsutils/motdposters.py +0 -0
  79. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/integrations/cmsutils/playedmovies.py +0 -0
  80. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/integrations/ytpipe/__init__.py +0 -0
  81. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/integrations/ytpipe/downloader.py +0 -0
  82. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/jobs/__init__.py +0 -0
  83. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/jobs/fetchurls_auth.py +0 -0
  84. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/jobs/job_scheduler.py +0 -0
  85. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/jobs/manager.py +0 -0
  86. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/jobs/rehost_emotes.py +0 -0
  87. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/jobs/tasks.py +0 -0
  88. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/logging_config.py +0 -0
  89. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/playlists/__init__.py +0 -0
  90. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/playlists/bulk_add.py +0 -0
  91. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/playlists/fire.py +0 -0
  92. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/playlists/importer.py +0 -0
  93. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/playlists/ordering.py +0 -0
  94. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/playlists/scheduler.py +0 -0
  95. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/promos/__init__.py +0 -0
  96. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/promos/director.py +0 -0
  97. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/queue/__init__.py +0 -0
  98. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/queue/completion.py +0 -0
  99. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/queue/ordering.py +0 -0
  100. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/queue/poller.py +0 -0
  101. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/queue/presence.py +0 -0
  102. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/queue/race_poller.py +0 -0
  103. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/queue/shadow.py +0 -0
  104. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/__init__.py +0 -0
  105. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/admin_catalog.py +0 -0
  106. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/admin_feedback.py +0 -0
  107. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/admin_job_schedules.py +0 -0
  108. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/admin_jobs.py +0 -0
  109. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/admin_moderation.py +0 -0
  110. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/admin_playlists.py +0 -0
  111. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/admin_promos.py +0 -0
  112. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/admin_queue.py +0 -0
  113. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/admin_schedules.py +0 -0
  114. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/auth.py +0 -0
  115. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/catalog.py +0 -0
  116. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/feedback.py +0 -0
  117. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/pages.py +0 -0
  118. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/queue.py +0 -0
  119. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/routes/user.py +0 -0
  120. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/static/js/admin-playlists.js +0 -0
  121. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/static/js/admin-promos.js +0 -0
  122. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/static/js/admin-queue-mgmt.js +0 -0
  123. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/static/js/admin-schedules.js +0 -0
  124. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/static/js/admin.js +0 -0
  125. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/static/js/main.js +0 -0
  126. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/admin/index.html +0 -0
  127. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/admin/playlists.html +0 -0
  128. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/admin/promos.html +0 -0
  129. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/admin/queue_mgmt.html +0 -0
  130. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/admin/schedules.html +0 -0
  131. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/base.html +0 -0
  132. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/catalog/browse.html +0 -0
  133. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/catalog/edit_item_modal.html +0 -0
  134. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/catalog/item_detail.html +0 -0
  135. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/catalog/item_not_found.html +0 -0
  136. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/feedback/index.html +0 -0
  137. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/queue/index.html +0 -0
  138. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/race.html +0 -0
  139. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/user/dashboard.html +0 -0
  140. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/templates/user/my_list.html +0 -0
  141. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/ws/__init__.py +0 -0
  142. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/ws/handler.py +0 -0
  143. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/kryten_webqueue/ws/manager.py +0 -0
  144. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/scripts/AGENTS.md +0 -0
  145. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/scripts/patch_mediacms_bulk_facets.py +0 -0
  146. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/scripts/patch_mediacms_tags.py +0 -0
  147. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/scripts/trigger_enrich.py +0 -0
  148. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/__init__.py +0 -0
  149. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_classify.py +0 -0
  150. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_config_persistence.py +0 -0
  151. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_feedback.py +0 -0
  152. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_fetchurls_sharepoint.py +0 -0
  153. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_people_facets.py +0 -0
  154. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_phase1.py +0 -0
  155. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_phase2_jobs.py +0 -0
  156. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_phase3_jobs.py +0 -0
  157. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_phase4_live_fixes.py +0 -0
  158. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_playlist_import.py +0 -0
  159. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_presence_refund.py +0 -0
  160. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_promo_director.py +0 -0
  161. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_promo_pool_exclusion.py +0 -0
  162. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_providers.py +0 -0
  163. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_queue_announce.py +0 -0
  164. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_race_poller.py +0 -0
  165. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_recently_played_hide.py +0 -0
  166. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_save_results_to_playlist.py +0 -0
  167. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_schedule_lock.py +0 -0
  168. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_search_facets.py +0 -0
  169. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_title_normalization.py +0 -0
  170. {kryten_webqueue-0.38.2 → kryten_webqueue-0.38.3}/tests/test_watchlist.py +0 -0
@@ -2,6 +2,31 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.38.3] - 2026-08-15
6
+
7
+ ### Changed
8
+
9
+ - **Reverted to sans-serif everywhere.** The 0.38.0 serif experiment (Georgia for
10
+ body and headings) was reverted; `--font-body` and `--font-heading` now use the
11
+ same Inter sans stack as the rest of the UI.
12
+ - **Restored the colored light-mode pills.** The 0.38.0 light-mode "contrast"
13
+ overrides that flattened every `.np-chip-*` to solid amber were removed, bringing
14
+ back the mint-green people and peach tag pills in light mode. All pills keep their
15
+ colored translucent styles in both themes.
16
+ - **Pill-shaped badges.** `.qi-badge` and `.job-badge` were rounded from 3px to full
17
+ 999px pills to match the catalog/queue chips.
18
+
19
+ ### Fixed
20
+
21
+ - **Login title now centers.** The Channel-Z Unicode title rendered at the default
22
+ h1 size overflowed the 400px auth container (with `white-space: nowrap`), so it
23
+ could not center. It now uses a clamped `font-size` that fits and centers.
24
+ - **Admin jobs list is a real aligned grid.** Previously each row was its own grid,
25
+ so the status/last-run/action columns never lined up. `.jobs-list` is now the
26
+ shared grid and rows use `display: contents`, so buttons and timestamps align in
27
+ columns across every row. Job badges are more visible and the last-run timestamp
28
+ is larger (0.75rem -> 0.9rem).
29
+
5
30
  ## [0.38.2] - 2026-08-15
6
31
 
7
32
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: kryten-webqueue
3
- Version: 0.38.2
3
+ Version: 0.38.3
4
4
  Summary: Netflix/Tubi-style catalog browser and pay-to-play queue management for CyTube
5
5
  Author: grobertson
6
6
  License-Expression: MIT
@@ -21,8 +21,8 @@
21
21
  --shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
22
22
  --radius: 8px;
23
23
  --nav-height: 4rem;
24
- --font-body: Georgia, 'Times New Roman', serif;
25
- --font-heading: Georgia, 'Times New Roman', serif;
24
+ --font-body: 'Inter', 'Helvetica Neue', 'Segoe UI', -apple-system, BlinkMacSystemFont, Roboto, sans-serif;
25
+ --font-heading: 'Inter', 'Helvetica Neue', 'Segoe UI', -apple-system, BlinkMacSystemFont, Roboto, sans-serif;
26
26
  --font-ui: 'Inter', 'Helvetica Neue', 'Segoe UI', -apple-system, BlinkMacSystemFont, Roboto, sans-serif;
27
27
  --font-mono: 'Consolas', 'Courier New', monospace;
28
28
  }
@@ -65,35 +65,9 @@
65
65
  --shadow: 0 4px 12px rgba(60, 40, 0, 0.15);
66
66
  }
67
67
 
68
- /* Light mode contrast overrides for pills, badges, chips */
69
- :root[data-theme="light"] .job-badge {
70
- color: var(--text-primary);
71
- background: var(--bg-secondary);
72
- border: 1px solid var(--border);
73
- }
74
-
75
- :root[data-theme="light"] .np-chip-cat,
76
- :root[data-theme="light"] .np-chip-tag,
77
- :root[data-theme="light"] .np-chip-person,
78
- :root[data-theme="light"] .np-chip-studio {
79
- background: var(--accent);
80
- color: var(--accent-text);
81
- border-color: var(--accent);
82
- font-weight: 600;
83
- }
84
-
85
- :root[data-theme="light"] .qi-badge,
86
- :root[data-theme="light"] .badge-paid {
87
- background: var(--accent);
88
- color: var(--accent-text);
89
- font-weight: 600;
90
- }
91
-
92
- :root[data-theme="light"] .badge-promo {
93
- background: var(--warning);
94
- color: #ffffff;
95
- font-weight: 600;
96
- }
68
+ /* Pills, badges, and chips keep their colored styles in both themes
69
+ (mint-green people, peach tags, etc.). Their translucent backgrounds and
70
+ colored borders read correctly on the light cream surfaces too. */
97
71
 
98
72
  * {
99
73
  margin: 0;
@@ -713,7 +687,7 @@ a:hover {
713
687
  .qi-badge {
714
688
  font-size: 0.85rem;
715
689
  padding: 0.2rem 0.6rem;
716
- border-radius: 3px;
690
+ border-radius: 999px;
717
691
  background: var(--accent);
718
692
  color: var(--accent-text);
719
693
  }
@@ -1310,41 +1284,61 @@ a.np-chip {
1310
1284
 
1311
1285
  /* Jobs */
1312
1286
  .jobs-list {
1313
- display: flex;
1314
- flex-direction: column;
1315
- gap: 0.5rem;
1287
+ display: grid;
1288
+ grid-template-columns: minmax(0, 1fr) auto auto;
1289
+ align-items: stretch;
1290
+ gap: 0.4rem 1.25rem;
1316
1291
  margin-bottom: 1rem;
1317
1292
  }
1293
+ /* Each row spreads its three cells across the shared grid so the status,
1294
+ last-run, and action columns line up across every row. */
1318
1295
  .job-row {
1319
- display: grid;
1320
- grid-template-columns: minmax(0, 1fr) auto auto auto;
1321
- gap: 0.75rem;
1322
- align-items: center;
1323
- padding: 0.5rem 0.75rem;
1296
+ display: contents;
1297
+ }
1298
+ .job-row > * {
1324
1299
  background: var(--bg-card);
1300
+ padding: 0.55rem 0.75rem;
1325
1301
  border-radius: var(--radius);
1302
+ display: flex;
1303
+ align-items: center;
1326
1304
  }
1327
1305
  .job-label {
1328
1306
  min-width: 0;
1307
+ gap: 0.4rem;
1329
1308
  overflow: hidden;
1330
- text-overflow: ellipsis;
1309
+ }
1310
+ .job-actions {
1311
+ justify-content: flex-end;
1312
+ gap: 0.4rem;
1331
1313
  }
1332
1314
  .job-badge {
1333
- font-size: 0.85rem;
1315
+ font-family: var(--font-ui);
1316
+ font-size: 0.8rem;
1317
+ font-weight: 600;
1334
1318
  text-transform: uppercase;
1335
1319
  letter-spacing: 0.04em;
1336
- padding: 0.2rem 0.6rem;
1337
- border-radius: 3px;
1338
- background: var(--bg-elevated, #222);
1339
- color: var(--text-secondary);
1320
+ padding: 0.2rem 0.65rem;
1321
+ border-radius: 999px;
1322
+ background: rgba(232, 150, 16, 0.15);
1323
+ color: var(--accent);
1324
+ border: 1px solid var(--accent);
1340
1325
  white-space: nowrap;
1341
1326
  }
1342
1327
  .job-last-run {
1343
- font-size: 0.75rem;
1328
+ font-size: 0.9rem;
1344
1329
  color: var(--text-secondary);
1345
1330
  white-space: nowrap;
1346
1331
  font-variant-numeric: tabular-nums;
1347
1332
  }
1333
+ @media (max-width: 640px) {
1334
+ .jobs-list {
1335
+ grid-template-columns: 1fr;
1336
+ gap: 0.25rem;
1337
+ }
1338
+ .job-row > .job-actions {
1339
+ justify-content: flex-start;
1340
+ }
1341
+ }
1348
1342
  /* Job Run parameter modal */
1349
1343
  .job-params {
1350
1344
  display: flex;
@@ -30,6 +30,8 @@
30
30
  font-weight: 700;
31
31
  white-space: nowrap;
32
32
  letter-spacing: 0.02em;
33
+ font-size: clamp(1.1rem, 5vw, 1.6rem);
34
+ text-align: center;
33
35
  }
34
36
  .login-instructions {
35
37
  font-size: 1.1rem;
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kryten-webqueue"
3
- version = "0.38.2"
3
+ version = "0.38.3"
4
4
  description = "Netflix/Tubi-style catalog browser and pay-to-play queue management for CyTube"
5
5
  readme = "README.md"
6
6
  license = "MIT"