Update/movix - #11146
Open
MysticSaba-max wants to merge 16 commits into
Open
Conversation
The activity displayed whimsical emoji-laden strings picked from a
rotating-variant system (~150 strings such as "Forging an account like
a digital druid"), far from the conventions of official activities.
Everything moves to neutral descriptive texts, plus a few standard
store patterns:
- removed core/variants.ts and the whole variant machinery (hashString,
pickVariant, resolveVariantText, findVariantsForPath, VariantText);
handlers now pass plain strings ("Browsing the movie catalog",
"Viewing a movie page", and so on)
- createWatchingPresence simplified: fixed states (source selection /
playing / paused / finished) with the standard smallImageKey icons
(Assets.Play/Pause/Stop/Search); Search and Live icons added on
/search and /live-tv
- new Privacy Mode setting: hides titles, posters, sources and buttons
in favor of a generic label, without reading sensitive DOM context
- finalizePresence no longer requires a state: simple pages show a
single line instead of filler text
- metadata.json: version 1.1.0, accents fixed in the French
description, privacyMode setting declared
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… support and settings
Six improvements to the Discord presence, fed by data bridges exposed
by the website:
- direct TMDB: the /watch routes carry the TMDB id; title and poster
are fetched from the API (cached per id and language) instead of
relying on DOM scraping. The WATCH_* patterns gain capture groups
(season/episode extraction from the URL was actually broken: no
groups existed)
- i18n: new core/strings.ts layer (complete FR/EN dictionaries, ~115
keys) driven by a "Display Language" setting; the chosen language
also applies to TMDB requests (fr-FR/en-US)
- rich WatchParty: the room page exposes its media and participant
count through a hidden data-premid-party-* bridge; the presence shows
"Title - SxEy" plus "In a WatchParty - N participants" as
ActivityType.Watching with the media poster
- Live TV: data-premid-live-context bridge (channel name + poster),
shown with the Live badge
- contextual buttons: SAFE_BUTTON_PATTERNS becomes SAFE_BUTTON_RULES
with a per-route label ("Watch" on watch pages, "Join the room" on
rooms, "View page" elsewhere)
- "Show Poster" setting: poster/logo toggle centralized in
buildBasePresence
- iframe support: iframe.ts relays currentTime/duration/paused from
embed players (10 s freshness guard on the presence side) so embeds
get real play/pause timestamps; metadata declares iframe and
iFrameRegExp
- metadata 1.2.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The smallImageKey values used the generic PreMiD resource assets, plain white glyphs with no background that floated over the poster in the Discord activity card. Like well-known activities, switch to dedicated badges: white glyph on a Movix red circle (#dc2626), generated at 512x512. At this stage the five badges (play, pause, stop, search, live) are served by the website itself. metadata 1.2.1. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A fixed https://movix.tax base was hardcoded for the logo and the status badges, while that exact domain is the one ISPs block and the website lives on rotating mirror domains. The FALLBACK_SITE_URL, FALLBACK_LOGO and PRESENCE_ICONS constants are replaced by getSiteLogo() and getPresenceIcon(), which build URLs from document.location.origin: the presence runs injected in the page, so the origin is always the mirror the user is browsing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rather than serving the images from the website origin (dependent on the current mirror), the assets/ folder follows the store convention: its content is published to cdn.rcd.gg/PreMiD/websites/M/Movix/assets/ on merge, stable URLs independent of the Movix domains. - assets/: logo.png plus the five round play/pause/stop/search/live badges - constants.ts: FALLBACK_LOGO and PRESENCE_ICONS are back, pointing to CDN_ASSETS_BASE (cdn.rcd.gg); getSiteLogo()/getPresenceIcon() removed from utils.ts - metadata 1.2.2 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The presence only showed the generic page title on /watchparty/create, while the page already knows the selected media. For a TV show the episode was missing from the Discord status. The website exposes the same data-premid-party-* bridge as the room (title, type, season, episode, poster) on its creation page; the handler reads getPartyContext() and shows "Creating a WatchParty" / "Title - SxEy" with the media poster, falling back to h2/h1 then "New WatchParty" when no media is loaded. metadata 1.2.3. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ault The room status showed the title and participants but neither the progress nor the player state, and the "Join the room" button stayed invisible because the Show Buttons setting was off by default. - utils.ts: new applyVideoPlaybackToPresence() reads the page video and sets the play/pause/stop badge plus start/end timestamps (Discord progress bar) while playing - watch.ts: the rich WatchParty room presence applies that playback state on top of "In a WatchParty - N participants" - metadata: Show Buttons enabled by default (Discord never shows your own buttons on your own profile); version 1.2.4 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
When the source label exposed by the website is a URL (custom source, direct file) or the source detail contains one, the Discord status displayed the player address. - formatWatchSourceLabel: a URL-shaped label is converted to a player name via getEmbedSourceLabelFromUrl (known provider patterns, otherwise the formatted hostname root) - formatWatchSourceDisplay: URL tokens (scheme, www., domain/path) are stripped from the detail before display, orphan separators cleaned up; a URL-only detail leaves just "Via <Name>" - getEmbedSourceLabelFromUrl accepts scheme-less URLs (https prefix added for parsing) - metadata 1.2.5 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The first filter only removed URLs with a scheme or a path: a bare
domain such as "example-host.com" was still displayed, and the detail
repeated the player name and language ("Via Vidzy - VF - Vidzy HD -
VF").
formatWatchSourceDisplay now works per segment (split on " - " or
"|"):
- the URL pattern also covers bare domains without a path
- a segment identical to the label, or prefixed by it, is reduced
("Vidzy HD" becomes "HD")
- exact duplicates and segments whose words all appear in a longer
segment are removed (the lone "VF" disappears when "Lynx VF" is
already there)
- a URL-only detail leaves just the player name, and the former
"Via Via" output of the no-detail case is gone
metadata 1.2.6.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The states of specific pages are displayed under the content title: the
indefinite article read oddly ("Dark Matter" / "Viewing a movie page").
Switch to the definite article in both FR and EN for the whole family:
movie/TV show/person page, the collection, the public list, the
France.tv program, the movie/TV show download. metadata 1.2.7.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
On movie and TV show pages the order becomes "Viewing the movie page" as details with the content title as state (instead of title first). Privacy Mode keeps the same output as before: action only, no title. metadata 1.2.8. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The /ftv, /ftv/info and /ftv/watch pages are no longer handled: removed the route patterns and associated button rules in constants.ts, the FTV branches in misc.ts and watch.ts, and the matching translation keys (browseFtv, ftv, viewFtvProgram, programId, watchFtv, fallbackFtv) in FR and EN. Those pages fall back to the generic "Browsing Movix" status. metadata 1.2.9. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The /vip, /vip/don, /vip/invoice/:id and /vip/cadeau/:id pages are no longer handled: removed the route patterns and button rules in constants.ts, the four branches in misc.ts and the associated translation keys (viewVip, makeDonation, viewInvoice, invoiceId, viewGift, giftId) in FR and EN. Those pages fall back to the generic "Browsing Movix" status. metadata 1.3.0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Same order as the movie and TV show pages: "Preparing the movie/TV show download" as details and the content title as state. metadata 1.3.1. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The store CI requires the activity version to be bumped against the published one. Given the scope of this update (full text rework, TMDB lookups, i18n, WatchParty/Live TV bridges, iframe support, France.tv and VIP support removed), 2.0.0 is the appropriate bump. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
🖼️ Activity asset previewI rummaged through the diff and found these. Finders keepers? No? Fine, they're yours. Movix (
|
| Preview | Source | URL |
|---|---|---|
![]() |
logo | https://cdn.rcd.gg/PreMiD/websites/M/Movix/assets/logo.png |
| thumbnail | https://cdn.rcd.gg/PreMiD/websites/M/Movix/assets/thumbnail.png |
Beep boop — I refresh this comment on every push, so no need to scroll. 🤖
npm run lint flagged two auto-fixable issues: ./constants.js must be imported before ./strings.js (perfectionist/sort-imports) and the iframe/iFrameRegExp keys must come after tags in metadata.json (jsonc/sort-keys). Applied with eslint --fix. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
| "streaming" | ||
| ], | ||
| "iframe": true, | ||
| "iFrameRegExp": ".*", |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Description
Full rework of the Movix activity, bumping it to 2.0.0:
iframe.tsrelaying currentTime/duration/paused.data-premid-*bridges exposed by the website.assets/folder with the logo and the five round status badges (play, pause, stop, search, live).Acknowledgements
npm run lint