diff --git a/Apps/MetaCore/docker-compose.yml b/Apps/MetaCore/docker-compose.yml index a4e99ea..3290c7a 100644 --- a/Apps/MetaCore/docker-compose.yml +++ b/Apps/MetaCore/docker-compose.yml @@ -5,7 +5,7 @@ services: # Public ingress goes through the `metacore` hash-lock proxy below — this # service has no public Caddy labels and no exposed host ports. metacore-app: - image: ghcr.io/worph/meta-core:1.0.23 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-core:1.0.24 container_name: metacore-app # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM # instead of swap. Both values must move together or swap comes back. diff --git a/Apps/MetaFeederAniList/docker-compose.yml b/Apps/MetaFeederAniList/docker-compose.yml index de9e962..3d89bee 100644 --- a/Apps/MetaFeederAniList/docker-compose.yml +++ b/Apps/MetaFeederAniList/docker-compose.yml @@ -24,7 +24,7 @@ services: # are its ids, cover, synopsis, reading direction, author." Keyless. # --------------------------------------------------------------------------- metafeederanilist-feeder: - image: ghcr.io/worph/meta-feeder-anilist:1.0.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-anilist:1.0.5 cpu_shares: 30 container_name: metafeederanilist-feeder mem_limit: 256m diff --git a/Apps/MetaFeederArxiv/docker-compose.yml b/Apps/MetaFeederArxiv/docker-compose.yml index 075956e..cddfce7 100644 --- a/Apps/MetaFeederArxiv/docker-compose.yml +++ b/Apps/MetaFeederArxiv/docker-compose.yml @@ -22,7 +22,7 @@ services: # metafeederarxiv-feeder — the arxiv feeder. Keyless; no config needed. # --------------------------------------------------------------------------- metafeederarxiv-feeder: - image: ghcr.io/worph/meta-feeder-arxiv:1.0.2 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-arxiv:1.0.4 cpu_shares: 30 container_name: metafeederarxiv-feeder hostname: metafeederarxiv-feeder diff --git a/Apps/MetaFeederEuropePMC/docker-compose.yml b/Apps/MetaFeederEuropePMC/docker-compose.yml index 48c1900..c3dd4e6 100644 --- a/Apps/MetaFeederEuropePMC/docker-compose.yml +++ b/Apps/MetaFeederEuropePMC/docker-compose.yml @@ -22,7 +22,7 @@ services: # metafeedereuropepmc-feeder — the europepmc feeder (upstream `pubmed`). Keyless. # --------------------------------------------------------------------------- metafeedereuropepmc-feeder: - image: ghcr.io/worph/meta-feeder-europepmc:1.0.2 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-europepmc:1.0.3 cpu_shares: 30 container_name: metafeedereuropepmc-feeder hostname: metafeedereuropepmc-feeder diff --git a/Apps/MetaFeederGiphy/docker-compose.yml b/Apps/MetaFeederGiphy/docker-compose.yml index 9803bc0..f0805df 100644 --- a/Apps/MetaFeederGiphy/docker-compose.yml +++ b/Apps/MetaFeederGiphy/docker-compose.yml @@ -21,7 +21,7 @@ services: # metafeedergiphy-feeder — the giphy feeder. Needs a Giphy API key. # --------------------------------------------------------------------------- metafeedergiphy-feeder: - image: ghcr.io/worph/meta-feeder-giphy:1.0.1 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-giphy:1.0.2 cpu_shares: 30 container_name: metafeedergiphy-feeder hostname: metafeedergiphy-feeder diff --git a/Apps/MetaFeederGutenberg/docker-compose.yml b/Apps/MetaFeederGutenberg/docker-compose.yml index 965d3f0..c421514 100644 --- a/Apps/MetaFeederGutenberg/docker-compose.yml +++ b/Apps/MetaFeederGutenberg/docker-compose.yml @@ -16,7 +16,7 @@ services: # for discovery/query; it returns records (no meta-core, no enrichment). # --------------------------------------------------------------------------- metafeedergutenberg-feeder: - image: ghcr.io/worph/meta-feeder-gutenberg:1.0.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-gutenberg:1.0.5 cpu_shares: 30 container_name: metafeedergutenberg-feeder hostname: metafeedergutenberg-feeder diff --git a/Apps/MetaFeederInternetArchive/docker-compose.yml b/Apps/MetaFeederInternetArchive/docker-compose.yml index 1726229..9e565f6 100644 --- a/Apps/MetaFeederInternetArchive/docker-compose.yml +++ b/Apps/MetaFeederInternetArchive/docker-compose.yml @@ -26,7 +26,7 @@ services: # from the MetaGateway dashboard (configure panel). # --------------------------------------------------------------------------- metafeederinternetarchive-feeder: - image: ghcr.io/worph/meta-feeder-internetarchive:1.1.3 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-internetarchive:1.1.4 cpu_shares: 30 container_name: metafeederinternetarchive-feeder # Bytes tier: a single archive item can list hundreds of files and one diff --git a/Apps/MetaFeederJamendo/docker-compose.yml b/Apps/MetaFeederJamendo/docker-compose.yml index 9a17a8e..cda16f6 100644 --- a/Apps/MetaFeederJamendo/docker-compose.yml +++ b/Apps/MetaFeederJamendo/docker-compose.yml @@ -27,7 +27,7 @@ services: # from the MetaGateway dashboard (configure panel). # --------------------------------------------------------------------------- metafeederjamendo-feeder: - image: ghcr.io/worph/meta-feeder-jamendo:1.1.3 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-jamendo:1.1.4 cpu_shares: 30 container_name: metafeederjamendo-feeder # Bytes tier: one mp32 derivative is buffered whole before hand-off. diff --git a/Apps/MetaFeederMusicBrainz/docker-compose.yml b/Apps/MetaFeederMusicBrainz/docker-compose.yml index 98b4856..7bdd683 100644 --- a/Apps/MetaFeederMusicBrainz/docker-compose.yml +++ b/Apps/MetaFeederMusicBrainz/docker-compose.yml @@ -29,7 +29,7 @@ services: # from the MetaGateway dashboard (configure panel). # --------------------------------------------------------------------------- metafeedermusicbrainz-feeder: - image: ghcr.io/worph/meta-feeder-musicbrainz:1.1.3 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-musicbrainz:1.1.4 cpu_shares: 30 container_name: metafeedermusicbrainz-feeder # Identity tier: JSON in, cards out, nothing buffered. Swap disabled diff --git a/Apps/MetaFeederOpenSubtitles/docker-compose.yml b/Apps/MetaFeederOpenSubtitles/docker-compose.yml index 46bb590..63f0460 100644 --- a/Apps/MetaFeederOpenSubtitles/docker-compose.yml +++ b/Apps/MetaFeederOpenSubtitles/docker-compose.yml @@ -39,7 +39,7 @@ services: # for discovery/query; the human configures it from the MetaGateway dashboard (configure panel). # --------------------------------------------------------------------------- metafeederopensubtitles-feeder: - image: ghcr.io/worph/meta-feeder-opensubtitles:1.0.3 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-opensubtitles:1.0.4 cpu_shares: 30 container_name: metafeederopensubtitles-feeder # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM instead of diff --git a/Apps/MetaFeederProwlarr/docker-compose.yml b/Apps/MetaFeederProwlarr/docker-compose.yml index aa8a8b3..edf8baf 100644 --- a/Apps/MetaFeederProwlarr/docker-compose.yml +++ b/Apps/MetaFeederProwlarr/docker-compose.yml @@ -40,7 +40,7 @@ services: # package, published as ${{ github.repository }}) was renamed. The old # `meta-feeder-indexer` package still exists but is frozen at 1.0.23 and # receives no further pushes. The APP keeps the `metafeederprowlarr` name. - image: ghcr.io/worph/meta-feeder-torznab:1.0.37 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-torznab:1.0.38 cpu_shares: 30 container_name: metafeederprowlarr-feeder # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM @@ -102,7 +102,7 @@ services: # No healthcheck: these plugin images don't ship one (curl absent). # --------------------------------------------------------------------------- metafeederprowlarr-filename-parser: - image: ghcr.io/worph/metamesh-plugin-filename-parser:1.0.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-filename-parser:1.0.5 cpu_shares: 30 container_name: metafeederprowlarr-filename-parser # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM @@ -122,7 +122,7 @@ services: - metafeederprowlarr metafeederprowlarr-tmdb: - image: ghcr.io/worph/metamesh-plugin-tmdb:1.0.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-tmdb:1.0.5 cpu_shares: 30 container_name: metafeederprowlarr-tmdb # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM diff --git a/Apps/MetaFeederSciHub/docker-compose.yml b/Apps/MetaFeederSciHub/docker-compose.yml index d7fb2ed..40b8925 100644 --- a/Apps/MetaFeederSciHub/docker-compose.yml +++ b/Apps/MetaFeederSciHub/docker-compose.yml @@ -21,7 +21,7 @@ services: # metafeederscihub-feeder — the scihub feeder. Needs SCIHUB_MIRRORS to do anything. # --------------------------------------------------------------------------- metafeederscihub-feeder: - image: ghcr.io/worph/meta-feeder-scihub:1.0.2 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-scihub:1.0.3 cpu_shares: 30 container_name: metafeederscihub-feeder hostname: metafeederscihub-feeder diff --git a/Apps/MetaFeederStremio/docker-compose.yml b/Apps/MetaFeederStremio/docker-compose.yml index 36b4448..70e5eca 100644 --- a/Apps/MetaFeederStremio/docker-compose.yml +++ b/Apps/MetaFeederStremio/docker-compose.yml @@ -46,7 +46,7 @@ services: # (configure panel). # --------------------------------------------------------------------------- metafeederstremio-feeder: - image: ghcr.io/worph/meta-feeder-stremio:1.3.0 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-stremio:1.3.1 cpu_shares: 30 container_name: metafeederstremio-feeder # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM instead of diff --git a/Apps/MetaFeederSuwayomi/docker-compose.yml b/Apps/MetaFeederSuwayomi/docker-compose.yml index 24cef34..a7d2a35 100644 --- a/Apps/MetaFeederSuwayomi/docker-compose.yml +++ b/Apps/MetaFeederSuwayomi/docker-compose.yml @@ -41,7 +41,7 @@ services: # lazily: each chapter's page list is fetched only when a reader opens it. # --------------------------------------------------------------------------- metafeedersuwayomi-feeder: - image: ghcr.io/worph/meta-feeder-suwayomi:1.0.7 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-suwayomi:1.0.8 cpu_shares: 30 container_name: metafeedersuwayomi-feeder mem_limit: 256m diff --git a/Apps/MetaFeederTMDB/docker-compose.yml b/Apps/MetaFeederTMDB/docker-compose.yml index 4cb7003..22b75fb 100644 --- a/Apps/MetaFeederTMDB/docker-compose.yml +++ b/Apps/MetaFeederTMDB/docker-compose.yml @@ -43,7 +43,7 @@ services: # from the MetaGateway dashboard (configure panel). # --------------------------------------------------------------------------- metafeedertmdb-feeder: - image: ghcr.io/worph/meta-feeder-tmdb:1.0.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-tmdb:1.0.6 cpu_shares: 30 container_name: metafeedertmdb-feeder # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM instead of diff --git a/Apps/MetaFeederTribler/docker-compose.yml b/Apps/MetaFeederTribler/docker-compose.yml index 8083345..6456d28 100644 --- a/Apps/MetaFeederTribler/docker-compose.yml +++ b/Apps/MetaFeederTribler/docker-compose.yml @@ -71,7 +71,7 @@ services: # from the MetaGateway dashboard (configure panel). # --------------------------------------------------------------------------- metafeedertribler-feeder: - image: ghcr.io/worph/meta-feeder-tribler:1.0.8 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-tribler:1.0.9 cpu_shares: 30 container_name: metafeedertribler-feeder hostname: metafeedertribler-feeder @@ -123,7 +123,7 @@ services: # images don't ship one (curl absent). # --------------------------------------------------------------------------- metafeedertribler-filename-parser: - image: ghcr.io/worph/metamesh-plugin-filename-parser:1.0.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-filename-parser:1.0.5 cpu_shares: 30 container_name: metafeedertribler-filename-parser hostname: metafeedertribler-filename-parser @@ -140,7 +140,7 @@ services: - metafeedertribler metafeedertribler-tmdb: - image: ghcr.io/worph/metamesh-plugin-tmdb:1.0.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-tmdb:1.0.5 cpu_shares: 30 container_name: metafeedertribler-tmdb hostname: metafeedertribler-tmdb diff --git a/Apps/MetaFeederUsenet/docker-compose.yml b/Apps/MetaFeederUsenet/docker-compose.yml index 534708f..df33771 100644 --- a/Apps/MetaFeederUsenet/docker-compose.yml +++ b/Apps/MetaFeederUsenet/docker-compose.yml @@ -38,7 +38,7 @@ services: # the MetaGateway dashboard (configure panel). # --------------------------------------------------------------------------- metafeederusenet-feeder: - image: ghcr.io/worph/meta-feeder-usenet:1.2.0 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-usenet:1.2.1 cpu_shares: 30 container_name: metafeederusenet-feeder # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM instead @@ -101,7 +101,7 @@ services: # images don't ship one (curl absent). # --------------------------------------------------------------------------- metafeederusenet-filename-parser: - image: ghcr.io/worph/metamesh-plugin-filename-parser:1.0.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-filename-parser:1.0.5 cpu_shares: 30 container_name: metafeederusenet-filename-parser mem_limit: 256m @@ -119,7 +119,7 @@ services: - metafeederusenet metafeederusenet-tmdb: - image: ghcr.io/worph/metamesh-plugin-tmdb:1.0.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-tmdb:1.0.5 cpu_shares: 30 container_name: metafeederusenet-tmdb mem_limit: 384m diff --git a/Apps/MetaFeederWikiCommons/docker-compose.yml b/Apps/MetaFeederWikiCommons/docker-compose.yml index 75ac978..266ff00 100644 --- a/Apps/MetaFeederWikiCommons/docker-compose.yml +++ b/Apps/MetaFeederWikiCommons/docker-compose.yml @@ -22,7 +22,7 @@ services: # metafeederwikicommons-feeder — the wikicommons feeder. Keyless; no config needed. # --------------------------------------------------------------------------- metafeederwikicommons-feeder: - image: ghcr.io/worph/meta-feeder-wikicommons:1.0.1 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-wikicommons:1.0.2 cpu_shares: 30 container_name: metafeederwikicommons-feeder hostname: metafeederwikicommons-feeder diff --git a/Apps/MetaFeederYouTube/docker-compose.yml b/Apps/MetaFeederYouTube/docker-compose.yml index 3a52506..1e708fa 100644 --- a/Apps/MetaFeederYouTube/docker-compose.yml +++ b/Apps/MetaFeederYouTube/docker-compose.yml @@ -30,7 +30,7 @@ services: # from the MetaGateway dashboard (configure panel). # --------------------------------------------------------------------------- metafeederyoutube-feeder: - image: ghcr.io/worph/meta-feeder-youtube:1.1.2 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-youtube:1.1.3 cpu_shares: 30 container_name: metafeederyoutube-feeder # Delegated tier: it moves an 11-character video id, never bytes. diff --git a/Apps/MetaFuse/docker-compose.yml b/Apps/MetaFuse/docker-compose.yml index a1639df..f85b672 100644 --- a/Apps/MetaFuse/docker-compose.yml +++ b/Apps/MetaFuse/docker-compose.yml @@ -4,7 +4,7 @@ services: # Backend service. Reachable on the pcs network as `metafuse-app`. # Public ingress goes through the `metafuse` hash-lock proxy below. metafuse-app: - image: ghcr.io/worph/meta-fuse:1.1.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-fuse:1.1.5 cpu_shares: 50 container_name: metafuse-app hostname: metafuse-app diff --git a/Apps/MetaGateway/README.md b/Apps/MetaGateway/README.md index 513f4dc..dcfd0c7 100644 --- a/Apps/MetaGateway/README.md +++ b/Apps/MetaGateway/README.md @@ -77,9 +77,9 @@ over mDNS on `pcs` regardless. | Image | Tag | |-------|-----| -| `ghcr.io/worph/meta-gateway` | `1.0.25` | -| `ghcr.io/worph/meta-share` | `1.0.26` | -| `ghcr.io/worph/meta-core` | `1.0.12` | +| `ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-gateway` | `1.0.43` | +| `ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-share` | `2.6.2` | +| `ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-core` | `1.0.24` | | `ghcr.io/yundera/appshield` | `2.0.9` | No feeder images are listed here any more: every content source is a **separate diff --git a/Apps/MetaGateway/docker-compose.yml b/Apps/MetaGateway/docker-compose.yml index deaf6ca..ec6dd2f 100644 --- a/Apps/MetaGateway/docker-compose.yml +++ b/Apps/MetaGateway/docker-compose.yml @@ -35,7 +35,7 @@ services: # =========================================================================== metagateway-core: # 1.0.1 carries the new meta-core API (records cids/ set, identity). - image: ghcr.io/worph/meta-core:1.0.23 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-core:1.0.24 container_name: metagateway-core # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM # instead of swap. Mirrors the dev sub-stack limits. @@ -81,7 +81,7 @@ services: # MetaShare app's `metashare-` hostnames, which on a shared `pcs` # would be ANOTHER hull's plugins writing to another /data). # - 3000 HTTP API - 3001 plugin callback API (internal only) - image: ghcr.io/worph/meta-share:2.4.0 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-share:2.6.2 container_name: metagateway-share # The swarm and blockstore moved to the ipfs plugin, so the hull needs far # less than the monolith did. @@ -129,7 +129,7 @@ services: # mDNS, bitswap), the blockstore, gateway discovery and the peer directory # the hull uses to forward Usenet cids. Waits up to 60 s for the hull's # internal /health before opening blocks.redb, so no depends_on. - image: ghcr.io/worph/meta-transport-ipfs:1.3.0 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-transport-ipfs:1.3.2 container_name: metagateway-share-ipfs hostname: metagateway-share-ipfs restart: unless-stopped @@ -184,7 +184,7 @@ services: # P2P listen/announce so it's discoverable + dialable off-host + the # 2026-07 discovery/filters fixes that make the meta-search fan-out # actually route `fileType:video` queries here. - image: ghcr.io/worph/meta-gateway:1.0.42 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-gateway:1.0.43 container_name: metagateway-app # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM # instead of swap. Mirrors the dev sub-stack limits. diff --git a/Apps/MetaGatewayShared/docker-compose.yml b/Apps/MetaGatewayShared/docker-compose.yml index 3c7cee3..dd5b24f 100644 --- a/Apps/MetaGatewayShared/docker-compose.yml +++ b/Apps/MetaGatewayShared/docker-compose.yml @@ -33,7 +33,7 @@ services: # co-located metashare-app then seeds the resolved CIDs. # --------------------------------------------------------------------------- metagateway-app: - image: ghcr.io/worph/meta-gateway:1.0.42 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-gateway:1.0.43 container_name: metagateway-app hostname: metagateway-app restart: unless-stopped @@ -144,7 +144,7 @@ services: # Runs as 10001:999 — the uid/gid baked into the meta-feeder-tmdb image. # --------------------------------------------------------------------------- metagateway-card: - image: ghcr.io/worph/meta-feeder-tmdb:1.0.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-feeder-tmdb:1.0.6 container_name: metagateway-card hostname: metagateway-card restart: unless-stopped diff --git a/Apps/MetaPluginAnimeDetector/docker-compose.yml b/Apps/MetaPluginAnimeDetector/docker-compose.yml index 022a872..f2fd42f 100644 --- a/Apps/MetaPluginAnimeDetector/docker-compose.yml +++ b/Apps/MetaPluginAnimeDetector/docker-compose.yml @@ -33,7 +33,7 @@ services: # consumer on the box can reach it by name. Default queue: fast. # --------------------------------------------------------------------------- metapluginanimedetector-plugin: - image: ghcr.io/worph/metamesh-plugin-anime-detector:1.0.1 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-anime-detector:1.0.2 cpu_shares: 30 container_name: metapluginanimedetector-plugin # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM diff --git a/Apps/MetaPluginFFmpeg/docker-compose.yml b/Apps/MetaPluginFFmpeg/docker-compose.yml index 0773199..a79d4cf 100644 --- a/Apps/MetaPluginFFmpeg/docker-compose.yml +++ b/Apps/MetaPluginFFmpeg/docker-compose.yml @@ -33,7 +33,7 @@ services: # consumer on the box can reach it by name. Default queue: fast. # --------------------------------------------------------------------------- metapluginffmpeg-plugin: - image: ghcr.io/worph/metamesh-plugin-ffmpeg:1.0.1 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-ffmpeg:1.0.2 cpu_shares: 30 container_name: metapluginffmpeg-plugin # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM diff --git a/Apps/MetaPluginFileInfo/docker-compose.yml b/Apps/MetaPluginFileInfo/docker-compose.yml index f5bbabf..09b26b8 100644 --- a/Apps/MetaPluginFileInfo/docker-compose.yml +++ b/Apps/MetaPluginFileInfo/docker-compose.yml @@ -33,7 +33,7 @@ services: # consumer on the box can reach it by name. Default queue: fast. # --------------------------------------------------------------------------- metapluginfileinfo-plugin: - image: ghcr.io/worph/metamesh-plugin-file-info:1.0.2 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-file-info:1.0.3 cpu_shares: 30 container_name: metapluginfileinfo-plugin # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM diff --git a/Apps/MetaPluginFilenameParser/docker-compose.yml b/Apps/MetaPluginFilenameParser/docker-compose.yml index ff3eacf..3d3293d 100644 --- a/Apps/MetaPluginFilenameParser/docker-compose.yml +++ b/Apps/MetaPluginFilenameParser/docker-compose.yml @@ -33,7 +33,7 @@ services: # consumer on the box can reach it by name. Default queue: fast. # --------------------------------------------------------------------------- metapluginfilenameparser-plugin: - image: ghcr.io/worph/metamesh-plugin-filename-parser:1.0.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-filename-parser:1.0.5 cpu_shares: 30 container_name: metapluginfilenameparser-plugin # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM diff --git a/Apps/MetaPluginFullHash/docker-compose.yml b/Apps/MetaPluginFullHash/docker-compose.yml index eb23d2d..7326f06 100644 --- a/Apps/MetaPluginFullHash/docker-compose.yml +++ b/Apps/MetaPluginFullHash/docker-compose.yml @@ -33,7 +33,7 @@ services: # consumer on the box can reach it by name. Default queue: background. # --------------------------------------------------------------------------- metapluginfullhash-plugin: - image: ghcr.io/worph/metamesh-plugin-fullhash:1.0.1 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-fullhash:1.0.2 cpu_shares: 30 container_name: metapluginfullhash-plugin # 2 GB, swap disabled (memswap_limit == mem_limit) → OOM instead of diff --git a/Apps/MetaPluginJellyfinNFO/docker-compose.yml b/Apps/MetaPluginJellyfinNFO/docker-compose.yml index 9cc71cb..8bc86d5 100644 --- a/Apps/MetaPluginJellyfinNFO/docker-compose.yml +++ b/Apps/MetaPluginJellyfinNFO/docker-compose.yml @@ -33,7 +33,7 @@ services: # consumer on the box can reach it by name. Default queue: fast. # --------------------------------------------------------------------------- metapluginjellyfinnfo-plugin: - image: ghcr.io/worph/metamesh-plugin-jellyfin-nfo:1.0.2 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-jellyfin-nfo:1.0.3 cpu_shares: 30 container_name: metapluginjellyfinnfo-plugin # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM diff --git a/Apps/MetaPluginLanguage/docker-compose.yml b/Apps/MetaPluginLanguage/docker-compose.yml index d04358a..376b1f6 100644 --- a/Apps/MetaPluginLanguage/docker-compose.yml +++ b/Apps/MetaPluginLanguage/docker-compose.yml @@ -33,7 +33,7 @@ services: # consumer on the box can reach it by name. Default queue: fast. # --------------------------------------------------------------------------- metapluginlanguage-plugin: - image: ghcr.io/worph/metamesh-plugin-language:1.0.3 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-language:1.0.4 cpu_shares: 30 container_name: metapluginlanguage-plugin # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM diff --git a/Apps/MetaPluginOpenSubtitles/docker-compose.yml b/Apps/MetaPluginOpenSubtitles/docker-compose.yml index 7b72f4e..ded6d0d 100644 --- a/Apps/MetaPluginOpenSubtitles/docker-compose.yml +++ b/Apps/MetaPluginOpenSubtitles/docker-compose.yml @@ -33,7 +33,7 @@ services: # consumer on the box can reach it by name. Default queue: background. # --------------------------------------------------------------------------- metapluginopensubtitles-plugin: - image: ghcr.io/worph/metamesh-plugin-opensubtitle:1.0.2 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-opensubtitle:1.0.3 cpu_shares: 30 container_name: metapluginopensubtitles-plugin # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM diff --git a/Apps/MetaPluginStillExtractor/docker-compose.yml b/Apps/MetaPluginStillExtractor/docker-compose.yml index d9f30bf..49e8c34 100644 --- a/Apps/MetaPluginStillExtractor/docker-compose.yml +++ b/Apps/MetaPluginStillExtractor/docker-compose.yml @@ -33,7 +33,7 @@ services: # consumer on the box can reach it by name. Default queue: background. # --------------------------------------------------------------------------- metapluginstillextractor-plugin: - image: ghcr.io/worph/metamesh-plugin-still-extractor:1.0.3 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-still-extractor:1.0.4 cpu_shares: 30 container_name: metapluginstillextractor-plugin # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM diff --git a/Apps/MetaPluginSubtitle/docker-compose.yml b/Apps/MetaPluginSubtitle/docker-compose.yml index fa377a4..a7db8e3 100644 --- a/Apps/MetaPluginSubtitle/docker-compose.yml +++ b/Apps/MetaPluginSubtitle/docker-compose.yml @@ -33,7 +33,7 @@ services: # consumer on the box can reach it by name. Default queue: fast. # --------------------------------------------------------------------------- metapluginsubtitle-plugin: - image: ghcr.io/worph/metamesh-plugin-subtitle:1.0.2 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-subtitle:1.0.3 cpu_shares: 30 container_name: metapluginsubtitle-plugin # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM diff --git a/Apps/MetaPluginSubtitleExtractor/docker-compose.yml b/Apps/MetaPluginSubtitleExtractor/docker-compose.yml index 9e5e72a..8915bad 100644 --- a/Apps/MetaPluginSubtitleExtractor/docker-compose.yml +++ b/Apps/MetaPluginSubtitleExtractor/docker-compose.yml @@ -33,7 +33,7 @@ services: # consumer on the box can reach it by name. Default queue: background. # --------------------------------------------------------------------------- metapluginsubtitleextractor-plugin: - image: ghcr.io/worph/metamesh-plugin-subtitle-extractor:1.0.3 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-subtitle-extractor:1.0.4 cpu_shares: 30 container_name: metapluginsubtitleextractor-plugin # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM diff --git a/Apps/MetaPluginTMDB/docker-compose.yml b/Apps/MetaPluginTMDB/docker-compose.yml index 62d7d56..afd406a 100644 --- a/Apps/MetaPluginTMDB/docker-compose.yml +++ b/Apps/MetaPluginTMDB/docker-compose.yml @@ -33,7 +33,7 @@ services: # consumer on the box can reach it by name. Default queue: background. # --------------------------------------------------------------------------- metaplugintmdb-plugin: - image: ghcr.io/worph/metamesh-plugin-tmdb:1.0.4 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-tmdb:1.0.5 cpu_shares: 30 container_name: metaplugintmdb-plugin # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM diff --git a/Apps/MetaRead/docker-compose.yml b/Apps/MetaRead/docker-compose.yml index 5af2e7f..9e9dbda 100644 --- a/Apps/MetaRead/docker-compose.yml +++ b/Apps/MetaRead/docker-compose.yml @@ -47,7 +47,7 @@ services: # consumer, not a library indexer. # --------------------------------------------------------------------------- metaread-core: - image: ghcr.io/worph/meta-core:1.0.23 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-core:1.0.24 container_name: metaread-core # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM instead of # swap. @@ -86,7 +86,7 @@ services: # peer count before suspecting the feeders. # --------------------------------------------------------------------------- metaread-search: - image: ghcr.io/worph/meta-search:1.2.9 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-search:1.2.10 container_name: metaread-search mem_limit: 1g memswap_limit: 1g @@ -154,7 +154,7 @@ services: # MetaShare app's `metashare-` hostnames, which on a shared `pcs` # would be ANOTHER hull's plugins writing to another /data). # - 3000 HTTP API - 3001 plugin callback API (internal only) - image: ghcr.io/worph/meta-share:2.4.0 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-share:2.6.2 container_name: metaread-share # The swarm and blockstore moved to the ipfs plugin, so the hull needs far # less than the monolith did. @@ -202,7 +202,7 @@ services: # mDNS, bitswap), the blockstore, gateway discovery and the peer directory # the hull uses to forward Usenet cids. Waits up to 60 s for the hull's # internal /health before opening blocks.redb, so no depends_on. - image: ghcr.io/worph/meta-transport-ipfs:1.3.0 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-transport-ipfs:1.3.2 container_name: metaread-share-ipfs hostname: metaread-share-ipfs restart: unless-stopped @@ -247,7 +247,7 @@ services: # My List, Continue Reading and reading positions live in the User Data Layer. # --------------------------------------------------------------------------- metaread-app: - image: ghcr.io/worph/meta-read:1.0.9 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-read:1.0.10 container_name: metaread-app hostname: metaread-app restart: unless-stopped diff --git a/Apps/MetaReadShared/docker-compose.yml b/Apps/MetaReadShared/docker-compose.yml index 42410c7..a8b275f 100644 --- a/Apps/MetaReadShared/docker-compose.yml +++ b/Apps/MetaReadShared/docker-compose.yml @@ -60,7 +60,7 @@ services: # peer count before suspecting the feeders. # --------------------------------------------------------------------------- metaread-search: - image: ghcr.io/worph/meta-search:1.2.9 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-search:1.2.10 container_name: metaread-search # 2g, not the self-contained listing's 1g: on the shared core it indexes the # gateway box's whole catalogue (~830 MiB steady state on watch.nsl.sh). @@ -127,7 +127,7 @@ services: # User Data Layer. # --------------------------------------------------------------------------- metaread-app: - image: ghcr.io/worph/meta-read:1.0.9 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-read:1.0.10 container_name: metaread-app hostname: metaread-app restart: unless-stopped diff --git a/Apps/MetaShare/docker-compose.yml b/Apps/MetaShare/docker-compose.yml index f70319d..12418ae 100644 --- a/Apps/MetaShare/docker-compose.yml +++ b/Apps/MetaShare/docker-compose.yml @@ -13,7 +13,7 @@ services: # - 3000 HTTP API + dashboard (proxied through the hash-lock + Caddy) # - 3001 plugin callback API — internal only, never published metashare-app: - image: ghcr.io/worph/meta-share:2.6.1 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-share:2.6.2 container_name: metashare-app # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM instead of # swap. The swarm, blockstore and torrent session moved to the plugins, so diff --git a/Apps/MetaSort/docker-compose.yml b/Apps/MetaSort/docker-compose.yml index e363f42..97d0ce6 100644 --- a/Apps/MetaSort/docker-compose.yml +++ b/Apps/MetaSort/docker-compose.yml @@ -4,7 +4,7 @@ services: # Backend service. Reachable on the pcs network as `metasort-app`. # Public ingress goes through the `metasort` hash-lock proxy below. metasort-app: - image: ghcr.io/worph/meta-sort:1.0.12 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-sort:1.0.13 container_name: metasort-app hostname: metasort-app restart: unless-stopped diff --git a/Apps/MetaSort/seed/config/plugins.yml b/Apps/MetaSort/seed/config/plugins.yml index 4aa09b8..1ce354c 100644 --- a/Apps/MetaSort/seed/config/plugins.yml +++ b/Apps/MetaSort/seed/config/plugins.yml @@ -15,7 +15,7 @@ defaults: plugins: file-info: enabled: true - image: ghcr.io/worph/metamesh-plugin-file-info:1.0.2 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-file-info:1.0.3 instances: 1 resources: memory: 128m @@ -23,7 +23,7 @@ plugins: ffmpeg: enabled: true - image: ghcr.io/worph/metamesh-plugin-ffmpeg:1.0.1 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-ffmpeg:1.0.2 instances: 1 resources: memory: 512m @@ -31,7 +31,7 @@ plugins: subtitle: enabled: true - image: ghcr.io/worph/metamesh-plugin-subtitle:1.0.2 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-subtitle:1.0.3 instances: 1 resources: memory: 128m @@ -39,7 +39,7 @@ plugins: subtitle-extractor: enabled: true - image: ghcr.io/worph/metamesh-plugin-subtitle-extractor:1.0.3 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-subtitle-extractor:1.0.4 instances: 1 resources: memory: 512m @@ -48,7 +48,7 @@ plugins: still-extractor: enabled: true - image: ghcr.io/worph/metamesh-plugin-still-extractor:1.0.3 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/metamesh-plugin-still-extractor:1.0.4 instances: 1 resources: memory: 512m diff --git a/Apps/MetaStremio/docker-compose.yml b/Apps/MetaStremio/docker-compose.yml index ef5ac8d..8c8c3cf 100644 --- a/Apps/MetaStremio/docker-compose.yml +++ b/Apps/MetaStremio/docker-compose.yml @@ -2,7 +2,7 @@ name: metastremio services: metastremio: - image: ghcr.io/worph/meta-stremio:1.1.3 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-stremio:1.1.4 cpu_shares: 50 container_name: metastremio restart: unless-stopped diff --git a/Apps/MetaTransportIpfs/docker-compose.yml b/Apps/MetaTransportIpfs/docker-compose.yml index 5b322ca..9cedfd3 100644 --- a/Apps/MetaTransportIpfs/docker-compose.yml +++ b/Apps/MetaTransportIpfs/docker-compose.yml @@ -16,7 +16,7 @@ name: metatransportipfs services: metashare-ipfs: - image: ghcr.io/worph/meta-transport-ipfs:1.3.0 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-transport-ipfs:1.3.2 container_name: metashare-ipfs hostname: metashare-ipfs restart: unless-stopped diff --git a/Apps/MetaTransportNzb/docker-compose.yml b/Apps/MetaTransportNzb/docker-compose.yml index f7dacbc..a62f874 100644 --- a/Apps/MetaTransportNzb/docker-compose.yml +++ b/Apps/MetaTransportNzb/docker-compose.yml @@ -16,7 +16,7 @@ name: metatransportnzb services: metashare-nzb: - image: ghcr.io/worph/meta-transport-nzb:1.4.0 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-transport-nzb:1.4.1 container_name: metashare-nzb hostname: metashare-nzb restart: unless-stopped diff --git a/Apps/MetaTransportTorrent/docker-compose.yml b/Apps/MetaTransportTorrent/docker-compose.yml index 746c828..88c2f83 100644 --- a/Apps/MetaTransportTorrent/docker-compose.yml +++ b/Apps/MetaTransportTorrent/docker-compose.yml @@ -16,7 +16,7 @@ name: metatransporttorrent services: metashare-torrent: - image: ghcr.io/worph/meta-transport-torrent:1.2.2 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-transport-torrent:1.2.3 container_name: metashare-torrent hostname: metashare-torrent restart: unless-stopped diff --git a/Apps/MetaWatch/README.md b/Apps/MetaWatch/README.md index e2f9a64..d44be48 100644 --- a/Apps/MetaWatch/README.md +++ b/Apps/MetaWatch/README.md @@ -50,10 +50,10 @@ another MetaShare archivist) must be reachable on the swarm. Install | Image | Tag | |-------|-----| -| `ghcr.io/worph/meta-watch` | `1.0.34` | -| `ghcr.io/worph/meta-search` | `1.1.0` | -| `ghcr.io/worph/meta-share` | `1.0.26` | -| `ghcr.io/worph/meta-core` | `1.0.12` | +| `ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-watch` | `1.0.86` | +| `ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-search` | `1.2.10` | +| `ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-share` | `2.6.2` | +| `ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-core` | `1.0.24` | | `ghcr.io/yundera/appshield` | `2.0.9` | Publish the `worph/*` tags before listing the app — `:latest` tracks the newest diff --git a/Apps/MetaWatch/docker-compose.yml b/Apps/MetaWatch/docker-compose.yml index f50358b..2c4ffac 100644 --- a/Apps/MetaWatch/docker-compose.yml +++ b/Apps/MetaWatch/docker-compose.yml @@ -29,7 +29,7 @@ services: metawatch-core: # 1.0.1 carries the identity API (commit 52f5b5c) required for MetaWatch # sign-in / keypair generation; 1.0.0 predates it. - image: ghcr.io/worph/meta-core:1.0.23 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-core:1.0.24 container_name: metawatch-core # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM # instead of swap. Mirrors the dev sub-stack limits. @@ -72,7 +72,7 @@ services: # RSA-keyed bootstrap.libp2p.io nodes) and therefore to DISCOVER remote # gateways via the kad `metamesh-gateway` provider namespace. Without it # this peer only ever sees same-host mDNS peers. - image: ghcr.io/worph/meta-search:1.2.9 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-search:1.2.10 container_name: metawatch-search # Hard RAM cap, swap disabled (memswap_limit == mem_limit) → OOM # instead of swap. Mirrors the dev sub-stack limits. @@ -157,7 +157,7 @@ services: # MetaShare app's `metashare-` hostnames, which on a shared `pcs` # would be ANOTHER hull's plugins writing to another /data). # - 3000 HTTP API - 3001 plugin callback API (internal only) - image: ghcr.io/worph/meta-share:2.4.0 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-share:2.6.2 container_name: metawatch-share # The swarm and blockstore moved to the ipfs plugin, so the hull needs far # less than the monolith did. @@ -205,7 +205,7 @@ services: # mDNS, bitswap), the blockstore, gateway discovery and the peer directory # the hull uses to forward Usenet cids. Waits up to 60 s for the hull's # internal /health before opening blocks.redb, so no depends_on. - image: ghcr.io/worph/meta-transport-ipfs:1.3.0 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-transport-ipfs:1.3.2 container_name: metawatch-share-ipfs hostname: metawatch-share-ipfs restart: unless-stopped @@ -250,7 +250,7 @@ services: # My List + Continue Watching persist in /DATA/AppData/metawatch/data. # --------------------------------------------------------------------------- metawatch-app: - image: ghcr.io/worph/meta-watch:1.0.85 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-watch:1.0.86 container_name: metawatch-app hostname: metawatch-app restart: unless-stopped diff --git a/Apps/MetaWatchShared/docker-compose.yml b/Apps/MetaWatchShared/docker-compose.yml index 25e605e..85dcbe9 100644 --- a/Apps/MetaWatchShared/docker-compose.yml +++ b/Apps/MetaWatchShared/docker-compose.yml @@ -45,7 +45,7 @@ services: # core of its own. # --------------------------------------------------------------------------- metawatch-search: - image: ghcr.io/worph/meta-search:1.2.9 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-search:1.2.10 container_name: metawatch-search hostname: metawatch-search restart: unless-stopped @@ -115,7 +115,7 @@ services: # owns the caddy_* labels directly and Caddy proxies straight to :3000. # --------------------------------------------------------------------------- metawatch-app: - image: ghcr.io/worph/meta-watch:1.0.85 + image: ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-watch:1.0.86 container_name: metawatch-app hostname: metawatch-app restart: unless-stopped diff --git a/CLAUDE.md b/CLAUDE.md index 68739a2..83c1aea 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -41,8 +41,9 @@ grep -rn 'gh/Worph/AppStore@main' Apps/ # must be empty `caddy_0` gateway domain (`appname-${APP_DOMAIN}`, `gateway_tls` import), `caddy_1` nip.io, `caddy_2` sslip.io (Let's Encrypt, no import) - **`store_app_id`** is the lowercased app name (`MetaFeederTMDB` → `metafeedertmdb`) -- **Images**: `ghcr.io/worph/meta*` pinned to `:latest` on purpose; the Yundera - perimeter images (`nginx-hash-lock`, `appshield`) stay version-pinned +- **Images**: pulled from IPCR on watch.nsl.sh, `ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/:`, + pinned to explicit versions (built by each repo's `.gitea/workflows/` on gitea-watch.nsl.sh/metastar on `v*` tags; + ghcr.io/worph is no longer published). The Yundera perimeter images (`nginx-hash-lock`, `appshield`) stay on ghcr.io/yundera - **Install order**: `MetaCore` first — every other app depends on it - **Multi-language**: descriptions/taglines carry `en_us`, `fr_fr`, `es_es`, `zh_cn`, `ko_kr`, `de_de`