What people see¶
- The consent sheet. When someone types your address, Kino shows "Instalar <name>", your version
and author, the description, the list of hosts under "Se va a conectar con:" (left out when
hostsis empty), and the warning "Plugin no verificado: solo instálalo si confías en quien lo hizo." with "Instalar" and "Cancelar". If your manifest has apasswordsetting it adds "Este plugin usa tu usuario y contraseña"; aurlsetting adds "Se conectará a los servidores que escribas en su configuración". Declaringdownloadadds "Puede descargar videos para verlos sin conexión",drmadds "Reproduce video protegido (DRM)",channelsadds "Agrega canales en vivo a la pestaña En vivo",secretsadds "Usa datos sellados por su autor", thesubtitlescapability adds "Agrega subtítulos a tus películas y series", eachinsecureHttphost adds, in red, "Conexión sin cifrar con <host>",liveStreamHosts: "any"adds, in red, "Puede reproducir canales desde cualquier servidor que indique su lista", andstreamHosts: "any"adds, in red, "Puede reproducir video desde cualquier servidor que indique". From apiVersion 6,migrateadds "Revisar lo que tienes guardado (biblioteca, historial, favoritos) para pasarlo a este plugin",telemetry: trueadds "Comparte registros de errores con Kino para corregir fallas" andtelemetry: "verbose"adds "Comparte registros detallados de reproducción y errores con Kino para corregir fallas";"browser": trueadds, in red, "Puede abrir páginas web ocultas para encontrar el video" and"browser": "pages", in red, "Puede abrir páginas web ocultas para mostrar contenido y encontrar el video" (Hidden browser). From apiVersion 7,trackingadds, in red, "Le contará a <your hosts> qué ves y cuándo lo terminas" (Telling a tracker) andsegmentsadds "Agrega el botón para saltar la intro y los créditos" (Where the intro and credits are). On an update, what is new carries a "nuevo" chip. Nothing of yours runs before they accept. - A long host list folds. With more than 3 hosts the sheet says "Se va a conectar con N servidores:", lists the first 3 (on an update, the new ones first) and "y N más (M nuevos)", with a "Ver todos" / "Ver menos" toggle. The permission lines and the "Plugin no verificado" warning sit above the list and never fold; "Cancelar" and "Instalar" stay pinned below it while the body scrolls. A short list still reads better: declare what you use, not every mirror you ever saw.
- Host dialogs. A
kino.fetchto an undeclared host duringresolve/episodes, and an undeclared host of the video the player opens or meets mid-playback, ask the person ("Rechazar" / "Permitir"; the focus starts on "Rechazar"). For a movie's or episode's video, subtitles or audio the dialog also offers "Permitir video de cualquier servidor" (the broad video permission); once chosen, the plugin's details say "Puede reproducir video desde cualquier servidor" next to "Quitar permiso de video amplio". A plugin with remembered refusals also shows "Olvidar rechazos de host". - While
resolveruns the player shows "Resolviendo fuente <name>…", and after 5 s "… buscando enlaces (N s)". - When a stream can't play, the player says why in Spanish, never the player's own English: for example "Este aparato no puede reproducir este formato de video (4K/HEVC)", "El servidor del video respondió con un error" or "No se pudo reproducir este video".
- Configurar. A plugin with
settingshas a "Configurar" button in Ajustes ▸ Plugins and, from Kino 0.9.50, its own tab in Ajustes with the same form (The settings form). Until every required setting has a value its status is "Falta configurar" and nothing of it runs. - Ver más. A Home row with a
refends in a "Ver más" card, and a search page with anextshows "Ver más resultados de <name>": both open a grid that asks you for the next page as the person scrolls. - Search, Home and the library. Your results appear in search under your plugin's name (with your
color), next to the app's own sources; yourhomerows appear on Home after the app's own; your titles play in Kino's player and appear in "Continuar viendo" and the library. Titles of a plugin that declaresdownloadcan be saved for offline viewing (Downloads); Plugin titles can be sent to a TV (Chromecast and DLNA, see Sending to the TV below). Aliveitem's card says "EN VIVO" and plays on tap, with no info page; a channel never enters "Continuar viendo" or the library (Live channels). A plugin found through thekino-plugintopic carries the label "De la comunidad" on its card. In search, a live channel whose name has nothing to do with what was typed is left out (the rule); movies and series always stay. - Status of each plugin in Ajustes > Plugins: "Activo", "Desactivado", "Falta configurar", "No responde — actívalo para volver a intentar" (three timeouts in a row; the person can re-enable it), "Actualización disponible — requiere tu aprobación", and "Archivos dañados, reinstálalo" (the installed file no longer matches what was installed).
-
Disable and uninstall. A disabled plugin disappears from search and Home; its titles stay in the library and say "Activa el plugin <name> para ver esto". Uninstalling deletes the plugin's files, its storage and its cached Home rows immediately, but keeps the person's library titles and progress: opening one says "Esto venía del plugin <name>, que ya no está instalado", and installing the plugin again restores them. That is one more reason to keep
idandrefhandling stable. Titles already downloaded keep playing offline and can be removed from Descargas. -
Signed plugins. A signed plugin (Signed plugins) shows the line "Firmado por su autor" on the consent sheet, a "Firmado" pill on catalog and community cards ("Activo · Firmado" on an installed one), and "Clave del autor: ABCD-EF01-2345-6789" in its details (phone: Gestionar; TV: the installed plugin's actions). Kino 0.9.45 and later.
Sending to the TV (Chromecast and DLNA)¶
Plugin titles can be sent to a TV from the player. Nothing in the manifest turns it on: Kino decides
per stream from what your resolve returns (url, mime, headers, drm):
| Your stream | What Kino does |
|---|---|
mp4/webm (or another progressive file) with no headers, on a host your plugin may use |
The TV fetches the URL itself; the phone moves no bytes. If the TV fails it, it is relayed through the phone. |
HLS (.m3u8) |
Through the phone (a Chromecast needs CORS on it): playlists are rewritten so every segment and key goes through the phone. |
Any file with headers (Referer, cookies, tokens in headers) |
Through the phone: it fetches with your headers and the TV only sees a local address. |
| A request-signed stream (Kino 0.9.50) | Through the phone, which calls sign() for every playlist and segment the TV asks for. |
| DRM (Widevine or ClearKey), DASH, progressive MPEG-TS, or a format nothing tells apart | Not sent: the person reads "Este título no se puede enviar a la TV" (protected ones: "Este título está protegido y no se puede enviar a la TV"). |
What helps authors: return a real mime (video/mp4, application/vnd.apple.mpegurl) or a URL that
ends in the right extension; Kino probes the first bytes of a stream nothing describes (a 1 KB ranged
read, 2 s) but that costs a request. Prefer links that need no headers (the lightest route); every
host involved must be one your plugin may reach (declared, typed, or covered by an "any" permission), over
https. While casting, the phone itself stays silent.
From Kino 0.9.50¶
With nothing new in your manifest, except where said:
- Play on the TV from the phone. With two paired devices, "Reproducir en el TV" works for a title
of any plugin: the TV opens it with its own copy of the plugin. If the TV can't, the phone says
why: "Instala el plugin <name> en el TV para verlo allí", "Activa …", "Configura …",
"Actualiza …", "Reinstala …", "En el TV hay otro plugin con ese nombre; instala el mismo desde su
repositorio", "Desbloquea el contenido 18+ en el TV para verlo allí" or, for a TV on an older Kino,
"Actualiza Kino en el TV para verlo allí". So keep your
idand your refs the same on every device. - New chapters of the series the person follows. Kino checks now and then (at most every 6 hours)
the saved series of any usable plugin that declares
episodes, calling yourepisodes(ref)with the savedref, and adds the missing chapters. A failure leaves that series alone and moves on to the next. Keep your series refs stable. - "Para ti". A recommendation that comes from a plugin's catalog is saved by its
ref: a movie as a movie, a series with its first season (callingepisodes). - 18+ content.
adult: trueentries of an apiVersion 6 plugin show only with the 18+ code unlocked (18+ content). - Channels on Home. An apiVersion 6 plugin can put channels in its Home rows (Channels in your Home rows).
- A section of its own in the TV sidebar or the phone's Inicio strip, and a group in Categorías,
for a plugin that declares
sectionor exportscategories(Section, categories and colors). - Search inside a "Ver más" page. Every "Ver más" page has "Buscar en esta categoría"
(
scopedSearch). - Your own tab in Ajustes. A plugin with
settingsgets a tab named after it, with its form, status lines and buttons, painted in itsthemecolors (The settings form). - The Servidor menu. When a Stream has two or more copies, the player's "Audio y subtítulos" menu
starts with a Servidor section listing them by
label("Opción 2", "Opción 3"… without one); the person switches and keeps watching from the same spot (Labelled and lazy copies). - Your own sentence on an error. A valid
userMessageshows as "Mensaje de <name>: …" instead of Kino's line (Your own sentence). - Subtitles from your plugin. A plugin that exports
subtitlesis listed, under its name, in the player's "Buscar subtítulos en línea" for any title Kino knows by IMDb or TMDB id (Subtitles for any title). - Info pages filled by your plugin. A
metaplugin fills what TMDB and AniList left empty on any title's info page (Describing other titles). - Hidden pages. A
"browser"plugin's page is never on screen: the player shows its usual loading state while it runs (Hidden browser). - Updates. A badge on Ajustes ▸ Plugins counts the updates waiting for approval, and a failed call of a plugin with a pending update says so (Updates).
- Community plugins. The section carries the note "Plugins de la comunidad — Kino no los revisa ni responde por su contenido.", and an installed plugin taken down from the index says "Retirado del índice de la comunidad." (Claims and plugin takedowns).
Plugins on the person's other devices¶
Kino keeps a person's plugins in step between their own devices (for example phone and TV): an install, a switch on or off, an uninstall, an approval or a saved setting on one device is sent to the others, and passwords travel encrypted end to end. Nothing in your plugin changes. What the other device does: it installs your plugin again from the same address, silently when what it fetches asks for nothing more than the person approved on the first one; if an update adds something (a host, a capability), it waits in "Plugins de tus otros aparatos" for the person to approve it there. So keep your repository public and your address stable.