kryten-webqueue 0.37.0__tar.gz → 0.38.0__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.
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/CHANGELOG.md +48 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/PKG-INFO +1 -1
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/pyproject.toml +1 -1
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/.github/workflows/gitleaks.yml +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/.github/workflows/python-publish.yml +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/.github/workflows/release.yml +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/.gitignore +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/.gitleaks.toml +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/.pre-commit-config.yaml +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/AGENT-WORKFLOW-GUIDE.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/AGENTS.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/README.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/config.example.json +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/deploy/kryten-webqueue.service +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/deploy/nginx-queue.conf +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/IMPLEMENTATION_SPEC.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/IMPL_API_GATE.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/IMPL_ECONOMY.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/IMPL_KRYTEN_PY.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/IMPL_ROBOT.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/Kryten-Economy Service Quality Survey Report at v0.13.0.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/Kryten-Webqueue Service Quality Survey Report at v0.27.1.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/Log for incorrect promo insertion problem.txt +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/PLAN_PRESENCE_AND_PROMOS.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/PRE_PLAN_GAPS.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/PRODUCT_PLAN.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/SPEC_ADMIN_ITEM_EDITOR.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/SPEC_CATALOG_ENRICHMENT_PIPELINE.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/SPEC_EMOTE_REHOST.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/SPEC_JOBS_AND_BROWSE.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/UX_POLISH_PLAN.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/__main__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/api_gate/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/api_gate/client.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/app.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/auth/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/auth/otp.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/auth/rate_limit.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/auth/session.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/db/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/db/_catalog.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/db/_connection.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/db/_enrichment.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/db/_feedback.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/db/_people.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/db/_playlists.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/db/_queue.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/db/_watchlist.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/classify.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/normalise.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/pipeline.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/providers.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/report.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/steps/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/steps/art.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/steps/categories.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/steps/meta.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/steps/sync.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/steps/tags.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/steps/title.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/images.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/mediacms.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/sync.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/config.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/cmsutils/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/cmsutils/_common.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/cmsutils/enrichmeta.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/cmsutils/enrichtitles.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/cmsutils/enrichtv.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/cmsutils/fetchurls.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/cmsutils/motdposters.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/cmsutils/playedmovies.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/ytpipe/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/ytpipe/downloader.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/jobs/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/jobs/fetchurls_auth.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/jobs/job_scheduler.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/jobs/manager.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/jobs/rehost_emotes.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/jobs/tasks.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/logging_config.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/playlists/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/playlists/bulk_add.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/playlists/fire.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/playlists/importer.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/playlists/ordering.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/playlists/scheduler.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/promos/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/promos/director.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/queue/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/queue/completion.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/queue/ordering.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/queue/poller.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/queue/presence.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/queue/race_poller.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/queue/shadow.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/admin_catalog.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/admin_feedback.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/admin_job_schedules.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/admin_jobs.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/admin_moderation.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/admin_playlists.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/admin_promos.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/admin_queue.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/admin_schedules.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/auth.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/catalog.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/feedback.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/pages.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/queue.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/user.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/static/css/main.css +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/static/js/admin-playlists.js +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/static/js/admin-promos.js +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/static/js/admin-queue-mgmt.js +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/static/js/admin-schedules.js +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/static/js/admin.js +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/static/js/main.js +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/admin/index.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/admin/playlists.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/admin/promos.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/admin/queue_mgmt.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/admin/schedules.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/auth/login.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/base.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/catalog/browse.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/catalog/edit_item_modal.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/catalog/item_detail.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/catalog/item_not_found.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/feedback/index.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/queue/index.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/race.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/user/dashboard.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/user/my_list.html +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/ws/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/ws/handler.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/ws/manager.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/scripts/AGENTS.md +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/scripts/patch_mediacms_bulk_facets.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/scripts/patch_mediacms_tags.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/scripts/trigger_enrich.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/__init__.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_classify.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_config_persistence.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_feedback.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_fetchurls_sharepoint.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_people_facets.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_phase1.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_phase2_jobs.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_phase3_jobs.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_phase4_live_fixes.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_playlist_import.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_presence_refund.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_promo_director.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_promo_pool_exclusion.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_providers.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_queue_announce.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_race_poller.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_recently_played_hide.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_save_results_to_playlist.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_schedule_lock.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_search_facets.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_title_normalization.py +0 -0
- {kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/tests/test_watchlist.py +0 -0
|
@@ -2,6 +2,54 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.38.0] - 2026-08-15
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **Delete Permanently feature** for admins. Catalog items can now be permanently
|
|
10
|
+
deleted from both the local database and MediaCMS via a 🗑️ Delete button on
|
|
11
|
+
browse cards and item detail pages (admin-only). The deletion requires explicit
|
|
12
|
+
confirmation with a "CANNOT be undone" warning, removes the item from all
|
|
13
|
+
catalog tables (tags, categories, people, main catalog) in proper FK order, and
|
|
14
|
+
logs the action with admin username and item title for audit trail. The MediaCMS
|
|
15
|
+
deletion is idempotent (404 treated as success) to handle edge cases gracefully.
|
|
16
|
+
|
|
17
|
+
- **Clickable queue items.** Queue items (both in the main queue list and the
|
|
18
|
+
Now Playing card) now link to their catalog detail pages. Clicking a queue item's
|
|
19
|
+
title or cover art navigates to `/catalog/item/{friendly_token}` for quick access
|
|
20
|
+
to full metadata, tags, and queueing options. Links are conditionally rendered
|
|
21
|
+
only when `friendly_token` exists (graceful degradation for non-catalog items).
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- **Typography system overhaul.** Established a consistent three-font hierarchy:
|
|
26
|
+
Georgia serif (body text and headings), Inter sans-serif with weights 400/500/600/700
|
|
27
|
+
(UI elements, navigation, buttons), and Consolas monospace (logs, code). Headings
|
|
28
|
+
now use font-weight 600-700 for proper visual hierarchy, nav links are semi-bold
|
|
29
|
+
(600) with an animated underline on hover, and the navbar displays the Channel-Z
|
|
30
|
+
Unicode logo (🟩🟨🟧🟥Channel-Z🟥🟧🟨🟩).
|
|
31
|
+
|
|
32
|
+
- **Admin jobs grid layout.** The admin dashboard jobs panel now uses CSS Grid
|
|
33
|
+
instead of flexbox, with properly aligned columns (`minmax(0, 1fr)` for text
|
|
34
|
+
columns to prevent overflow). Job names, statuses, and actions stay aligned
|
|
35
|
+
across rows for improved readability.
|
|
36
|
+
|
|
37
|
+
- **Size increases for readability.** Job badges and queue item badges increased
|
|
38
|
+
to 0.85rem, queue item titles to 1rem, now-playing descriptions to 0.95rem, and
|
|
39
|
+
metadata chips to 0.9rem. The Back link on detail pages is now styled as a
|
|
40
|
+
simple text link (`.back-link` utility class) rather than a button.
|
|
41
|
+
|
|
42
|
+
- **Light mode contrast improvements.** Pills and badges in light mode now use
|
|
43
|
+
explicit high-contrast color overrides (solid backgrounds with proper text colors)
|
|
44
|
+
to meet WCAG AA accessibility standards. Race page pills also received light mode
|
|
45
|
+
overrides with solid backgrounds.
|
|
46
|
+
|
|
47
|
+
- **Login page polish.** The login page now displays the Channel-Z Unicode logo as
|
|
48
|
+
the title (Georgia serif, bold), enhanced instructional text sizing (1.1rem,
|
|
49
|
+
semi-bold), smart button states (disabled until input has content), Enter key
|
|
50
|
+
submission on both username and OTP fields, and auto-focus on the OTP input after
|
|
51
|
+
code delivery.
|
|
52
|
+
|
|
5
53
|
## [0.37.0] - 2026-08-14
|
|
6
54
|
|
|
7
55
|
### Added
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/docs/Log for incorrect promo insertion problem.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/__init__.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/classify.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/normalise.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/pipeline.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/providers.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/report.py
RENAMED
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/steps/art.py
RENAMED
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/steps/meta.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/steps/sync.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/steps/tags.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/catalog/enrichment/steps/title.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/cmsutils/__init__.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/cmsutils/_common.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/cmsutils/enrichtv.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/cmsutils/fetchurls.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/ytpipe/__init__.py
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/integrations/ytpipe/downloader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/admin_job_schedules.py
RENAMED
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/routes/admin_moderation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/static/js/admin-playlists.js
RENAMED
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/static/js/admin-queue-mgmt.js
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/static/js/admin-schedules.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/admin/index.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/admin/playlists.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/admin/promos.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/admin/queue_mgmt.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/admin/schedules.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/catalog/browse.html
RENAMED
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/catalog/item_detail.html
RENAMED
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/feedback/index.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/queue/index.html
RENAMED
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/user/dashboard.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.37.0 → kryten_webqueue-0.38.0}/kryten_webqueue/templates/user/my_list.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|