kryten-webqueue 0.6.3__tar.gz → 0.6.5__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.6.3 → kryten_webqueue-0.6.5}/CHANGELOG.md +16 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/PKG-INFO +1 -1
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/catalog/db.py +19 -1
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/pyproject.toml +1 -1
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/.github/workflows/python-publish.yml +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/.github/workflows/release.yml +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/.gitignore +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/README.md +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/config.example.json +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/deploy/kryten-webqueue.service +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/deploy/nginx-queue.conf +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/docs/IMPLEMENTATION_SPEC.md +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/docs/IMPL_API_GATE.md +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/docs/IMPL_ECONOMY.md +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/docs/IMPL_KRYTEN_PY.md +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/docs/IMPL_ROBOT.md +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/docs/PRE_PLAN_GAPS.md +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/docs/PRODUCT_PLAN.md +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/__init__.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/__main__.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/api_gate/__init__.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/api_gate/client.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/app.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/auth/__init__.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/auth/otp.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/auth/rate_limit.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/auth/session.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/catalog/__init__.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/catalog/images.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/catalog/sync.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/config.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/jobs/__init__.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/jobs/manager.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/playlists/__init__.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/playlists/fire.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/playlists/importer.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/playlists/scheduler.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/queue/__init__.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/queue/ordering.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/queue/poller.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/queue/shadow.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/routes/__init__.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/routes/admin_jobs.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/routes/admin_playlists.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/routes/admin_queue.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/routes/admin_schedules.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/routes/auth.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/routes/catalog.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/routes/pages.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/routes/queue.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/routes/user.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/static/css/main.css +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/static/js/main.js +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/admin/index.html +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/admin/playlists.html +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/admin/queue_mgmt.html +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/admin/schedules.html +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/auth/login.html +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/base.html +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/catalog/browse.html +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/catalog/item_detail.html +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/catalog/item_not_found.html +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/queue/index.html +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/user/dashboard.html +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/ws/__init__.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/ws/handler.py +0 -0
- {kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/ws/manager.py +0 -0
|
@@ -4,6 +4,22 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
## [0.6.5] - 2026-06-08
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **Refined catalog browse ordering** — Tightened the quality-weighted sort introduced in 0.6.4 based on feedback. (1) Dropped the popularity (times-queued) tier, which discouraged discovery. (2) Replaced the weak "has cover art" test with a real-poster signal: items are led by `cover_art_source IN ('tmdb', 'omdb')` rather than mere presence of a `cover_art_path`/`thumbnail_url` — nearly every item carries a MediaCMS thumbnail, and the resolver also caches that thumbnail as a last-resort cover (`cover_art_source = 'thumbnail'`), so the old test was almost always true. A genuine TMDB/OMDB poster match also implies a well-formed, matchable title. Letter-first-then-alphabetical ordering (which correctly sinks `"02 - Episode"` style entries) is retained.
|
|
12
|
+
|
|
13
|
+
[0.6.5]: https://github.com/grobertson/kryten-webqueue/releases/tag/v0.6.5
|
|
14
|
+
|
|
15
|
+
## [0.6.4] - 2026-06-08
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- **Quality-weighted catalog browse ordering** — The catalog landing no longer leads with alphabetical junk (art-less, number-prefixed "02 - Episode" entries). Browse results are now ranked by signals derived entirely from existing data — no curation or featured-item maintenance required: (1) items with box art (cover or thumbnail) first, (2) then by real popularity (times queued, from `queue_history`), (3) titles beginning with a letter before number/symbol-prefixed titles, (4) then alphabetical for a stable tail. Applies to both the unfiltered landing and category-filtered browse; search continues to use full-text relevance.
|
|
20
|
+
|
|
21
|
+
[0.6.4]: https://github.com/grobertson/kryten-webqueue/releases/tag/v0.6.4
|
|
22
|
+
|
|
7
23
|
## [0.6.3] - 2026-06-08
|
|
8
24
|
|
|
9
25
|
### Fixed
|
|
@@ -256,7 +256,25 @@ class Database:
|
|
|
256
256
|
)
|
|
257
257
|
"""
|
|
258
258
|
params.append(category)
|
|
259
|
-
|
|
259
|
+
# Quality-weighted ordering so the landing page leads with presentable
|
|
260
|
+
# items instead of alphabetical junk. No curation required — every signal
|
|
261
|
+
# is derived from existing data:
|
|
262
|
+
# 1. Items with REAL box art first. The strong signal is a poster match
|
|
263
|
+
# from TMDB/OMDB (cover_art_source), NOT mere presence of a
|
|
264
|
+
# cover_art_path/thumbnail_url — almost every item carries a MediaCMS
|
|
265
|
+
# thumbnail, and the resolver also caches that thumbnail as a
|
|
266
|
+
# last-resort cover (cover_art_source = 'thumbnail'). A genuine
|
|
267
|
+
# poster match also implies a well-formed, matchable title.
|
|
268
|
+
# 2. Titles beginning with a letter before number/symbol-prefixed
|
|
269
|
+
# "02 - Episode" style entries.
|
|
270
|
+
# 3. Finally alphabetical for a stable, predictable tail.
|
|
271
|
+
query += """
|
|
272
|
+
ORDER BY
|
|
273
|
+
(c.cover_art_source IN ('tmdb', 'omdb')) DESC,
|
|
274
|
+
(CASE WHEN c.title GLOB '[A-Za-z]*' THEN 0 ELSE 1 END) ASC,
|
|
275
|
+
c.title ASC
|
|
276
|
+
LIMIT ? OFFSET ?
|
|
277
|
+
"""
|
|
260
278
|
params.extend([per_page, (page - 1) * per_page])
|
|
261
279
|
return await self._fetch_all(query, params)
|
|
262
280
|
|
|
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
|
|
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.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/admin/playlists.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/admin/queue_mgmt.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/admin/schedules.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/catalog/browse.html
RENAMED
|
File without changes
|
{kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/catalog/item_detail.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kryten_webqueue-0.6.3 → kryten_webqueue-0.6.5}/kryten_webqueue/templates/user/dashboard.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|