# 150 — Click action of every Home widget (user, 2026-10-02)

Decisions (user, chat 2026-10-02, all recommended answers + the follow-up "options are specific per widget, as many as
possible, all logical and 100 % reliable"):

1. **Per widget parameter "Klik"** next to count / sort / style, edited in the widget manager (070 §5). Stored in the skin
   string `mil.<sec>.<n>.click`; empty = the widget's default (today's behaviour), so nothing changes until the user picks.
2. **Skin Milionář never reads the addon setting `default_movie_action`.** That setting stays for the classic addon menu
   only. The lists "Moje filmy" / "Moje seriály" opened from the skin (`&skin=1`) read two skin settings
   (`mil.list.movies.click`, `mil.list.series.click`, Nastavení vzhledu → Milionář).
3. Every widget type has its **own complete set of options**; a choice always does what its label says. Folder-only
   widgets (Žánry, Kraska, ČSFD) have no choice. Options are only offered when they work for every item of the widget.
4. "Přehrát ihned" = continue from the saved position (no Kodi prompt), same stream as last time if known, otherwise the
   stream selection dialog (`src=known`; never a silent pick, never a silent failure).

## Option sets

Option id → label (cs). `*` = default of the widget.

| Item kind | Widgets | Options |
|-----------|---------|---------|
| Film | `cont_movies`*, `my_movies_progress`* play; `my_movies_added/unwatched/watched/all`* detail; `widget_tmdb_popular_movies`* play | `play` Přehrát ihned, `play_start` Přehrát od začátku, `stream` Vybrat stream, `detail` Detail, `similar` Podobné filmy, `game` Milionář hra, `list` Přidat do / odebrat z Moje filmy, `channel` Přidat do MyCinema, `watched` Označit zhlédnuté / nezhlédnuté |
| Seriál | `my_series_added/unwatched/all`* folder; `widget_tmdb_popular_series`* next | `folder` Sezóny seriálu, `detail` Detail, `next` Přehrát další díl, `next_stream` Další díl: vybrat stream, `similar` Podobné seriály, `game`, `list` Přidat do / odebrat z Moje seriály, `channel` Přidat do MyTV, `watched` Označit seriál zhlédnutý / nezhlédnutý |
| Epizoda | `cont_series`*, `my_series_next`*, `my_series_new`* play | `play`, `play_start`, `stream`, `detail` Detail seriálu, `folder` Sezóny seriálu, `season` Díly této sezóny, `similar`, `game`, `list`, `channel`, `watched` Označit epizodu |
| Film + seriál / epizoda | `recent_played`*, `widget_mycinema_recommended`*, `widget_ai_recent`* play | the options both kinds have: `play`, `play_start`, `stream`, `detail`, `similar`, `game`, `list`, `channel`, `watched` (a series entry plays its next episode) |
| Hra | `widget_game_topics` | `game`* , `play`, `stream`, `detail`, `similar` |
| MyTV další epizoda | `widget_mytv_next` | `play`* (the channel's own action, keeps the MyTV progress), `detail`, `folder`, `season`, `similar`, `game`, `channel_open` Otevřít kanál |
| MyTV kanál | `widget_mytv_channels` | `live`* Spustit vysílání, `live_shuffle` Spustit vysílání s novým pořadím, `first` Přehrát první díl programu, `random` Přehrát náhodný díl, `open` Otevřít kanál |
| MyCinema kanál | `widget_mycinema_channels` | `live`* Spustit vysílání, `live_shuffle`, `first` Přehrát první film programu, `random` Přehrát náhodný film, `open` Otevřít kino |
| Složky | `my_movies_genres`, `my_series_genres`, `widget_kraska_root`, `widget_csfd_charts` | none (open the folder) |

Upcoming (unaired) episode items keep the notification for `play`, `play_start`, `stream`, `next`; all other options work.

## Where the code lives

- `wcs/library2/clicks.py` — registry (kind, options, default per row), the paths of every option. Light module (fast
  path). New fast-path actions in `ctx.py`: `ctx_next`, `ctx_list_toggle`, `ctx_mark_toggle`.
- `wcs/library2/resolver.py` — `src=known` (same stream as last time, otherwise the dialog).
- `wcs/skin/slots.py` — `click` is the 5th value of a widget (default from `clicks.default`), edit sheet row
  "Klik: …", row info `count · sort · style · click`.
- `scripts/skin_harness/gen_slots.py` — `&click=` in the widget URL; `rows.py` / `widgets.py` read it.
- `wcs/ai/channel_play.py` — headless MyTV / MyCinema broadcast (the cached program queue and generation of the dialogs,
  without the dialog): `live`, `live_shuffle`, `first`, `random`.
- `wcs/library2/listings.py` — the two skin list settings (`&skin=1`).
