diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-24 14:33:20 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-24 14:33:20 +0200 |
| commit | 0b0da86f1f9d6f0b1a27b5e1e1658c42de9f356a (patch) | |
| tree | ba8daf5dcf050d44b7b0e766babbfda8fadac59f /packages/meshbay-common | |
| parent | 6af05abf410bbd038ce7fa6915a659defc509071 (diff) | |
| download | meshbay-0b0da86f1f9d6f0b1a27b5e1e1658c42de9f356a.tar.gz | |
feat(node,hub): season-specific overviews, manual TMDB match correction, and wizard polish
Two operator-facing fixes for a real 3-season show whose automatic TMDB
match was wrong at the show level: per-season overview/air_date tabs in the
detail modal (falling back to the show-level text when a season's own is
empty), and a "Fix match…" search-and-correct affordance that re-resolves
every file sharing the corrected show's display_title. New signed op
OP_TMDB_OVERRIDE and two read-only pairs (season_meta_req/resp,
tmdb_search_req/resp), MNP_VERSION 0.5 -> 0.6.
Also: the create-group wizard gets a spinning indexing indicator and an
app-selection step, group settings default the TMDB language to the
operator's own locale (never as a global default), and a file renamed
mid-session now re-triggers title parsing instead of being silently
skipped by the enrichment dedup guard.
Fixes two bugs found during this work: the search overlay's z-index lost
to the base video-overlay class and rendered invisibly, and season_meta's
own empty overview didn't fall back to the show-level one.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LAmyXtc6dAADsH23ydXQpY
Diffstat (limited to 'packages/meshbay-common')
| -rw-r--r-- | packages/meshbay-common/src/meshbay_common/__init__.py | 7 | ||||
| -rw-r--r-- | packages/meshbay-common/src/meshbay_common/adminop.py | 5 | ||||
| -rw-r--r-- | packages/meshbay-common/src/meshbay_common/protocol.py | 6 |
3 files changed, 17 insertions, 1 deletions
diff --git a/packages/meshbay-common/src/meshbay_common/__init__.py b/packages/meshbay-common/src/meshbay_common/__init__.py index 4c3bea0..938f5d4 100644 --- a/packages/meshbay-common/src/meshbay_common/__init__.py +++ b/packages/meshbay-common/src/meshbay_common/__init__.py @@ -13,5 +13,10 @@ __version__ = "0.6.0" # `thumb_hash`, and added `media_meta_req`/`media_meta_resp`, for the Videos # group app. Additive — an older client simply doesn't render the new # fields — so this is a MINOR bump too. -MNP_VERSION = "0.5" +# 0.6: added `season_meta_req`/`season_meta_resp` (per-season TMDB overview, +# rather than one static show-level summary applied to every season alike) +# and `tmdb_search_req`/`tmdb_search_resp` + `tmdb_override`/`tmdb_override_ack` +# (an operator correcting a wrong automatic TMDB match, found live against a +# real show fragmented across TMDB entries per season). All additive. +MNP_VERSION = "0.6" MHP_VERSION = "0.1" diff --git a/packages/meshbay-common/src/meshbay_common/adminop.py b/packages/meshbay-common/src/meshbay_common/adminop.py index e86f322..51396c7 100644 --- a/packages/meshbay-common/src/meshbay_common/adminop.py +++ b/packages/meshbay-common/src/meshbay_common/adminop.py @@ -71,6 +71,11 @@ OP_TMDB_CONFIG = "tmdb_config" # entry point for this group — per-group, unlike tmdb_config. Signed like # the rest: it decides what every member's Videos tab shows. OP_VIDEO_ROOT = "video_root" +# Correcting a wrong automatic TMDB match — signed for the same reason as +# tmdb_config: it changes what every member sees for a show/movie, node-wide +# (media_cache is shared, not per-viewer), so an unsigned override would let +# any member vandalize another show's metadata. +OP_TMDB_OVERRIDE = "tmdb_override" OP_ROOT_ADD = "root_add" OP_ROOT_REMOVE = "root_remove" OP_GROUP_ATTACH = "group_attach" diff --git a/packages/meshbay-common/src/meshbay_common/protocol.py b/packages/meshbay-common/src/meshbay_common/protocol.py index 246bd00..900acc2 100644 --- a/packages/meshbay-common/src/meshbay_common/protocol.py +++ b/packages/meshbay-common/src/meshbay_common/protocol.py @@ -96,6 +96,12 @@ class MNP: VIDEO_ROOT_ACK = "video_root_ack" TMDB_CONFIG = "tmdb_config" # operator → node: enable/disable TMDB, set token TMDB_CONFIG_ACK = "tmdb_config_ack" # node → everyone: new TMDB config (never the token) + SEASON_META_REQ = "season_meta_req" # client → node: TMDB overview/poster for one season + SEASON_META_RESP = "season_meta_resp" # node → client: season-level TMDB fields (or none) + TMDB_SEARCH_REQ = "tmdb_search_req" # client → node: candidate TMDB matches for a query + TMDB_SEARCH_RESP = "tmdb_search_resp" # node → client: candidate list (id, title, year, poster) + TMDB_OVERRIDE = "tmdb_override" # operator → node: replace a show/movie's TMDB match + TMDB_OVERRIDE_ACK = "tmdb_override_ack" # Device linking. A new device files a request bound to a code it displays; # an already-pinned device of the same account approves it. Neither the hub # nor the node can produce the countersignature. |