# 900 — Decision log

No open questions. If implementation contradicts a decision: stop, ask the
user, record the answer here and in the chapter.

## User decisions (2026-10-01)

| # | Question | Decision | Chapter |
|---|----------|----------|---------|
| 0 | Scope | Addon takes over library functions for skin.milionar; Kodi library integration kept as an extension for other skins | 000 |
| 0a | Menu | Moje filmy / Moje seriály items; Kodi Filmy / Seriály hidden by default | 070 §1 |
| 0b | Library mentions | No "Add to Kodi library" anywhere in skin.milionar | 080 §3 |
| 0c | MyTV / MyCinema | Their continue lives only in their own rows | 040 §1 |
| 1 | Thresholds | Like Kodi: 180 s / 90 % / countdown = watched; editable | 040 §3 |
| 2 | Tracking scope | Everything played from the addon; lists change only manually | 040 §1 |
| 3 | MyTV ticks | Fully separate, nothing written to the store | 040 §1 |
| 3a | Shared progress (amended 2026-10-06) | Settings `mytv_shared_progress` / `mycinema_shared_progress`, on by default: the store is the only truth for the channels (next episode, resume, watched), their plays carry the tracker contract (origin `channel`, no library autoplay) and join My series / My movies; switch on merges the channels into the store (the further progress wins), switch off copies the store's state back to the channel files. Off = decisions 0c and 3 as before | `wcs/library2/shared.py` |
| 4 | Continue click | Resume at once with the same file, fallback automatic pick | 070 §4 |
| 5 | My lists UI | Native Videos window with addon listings | 060 |
| 6 | Rows | Slot system (6 per section, type/limit/sort/style, behaviour switches), defaults as proposed | 070 §2–3 |
| 7 | Continue layout | Movies row and series row separately, then Recently played | 070 §3 |
| 8 | Search library rows | Replaced by "In My movies / My series" | 090 |
| 9 | Specials | Skipped by Continue and autoplay | 050 §1 |
| 10 | Unaired next episode | Shown in Continue with its air date | 050 §2–3 |
| 11 | Old data | Clean start for watch state/history; lists (3 + 12) kept | 030 §4–5 |
| 12 | Context menu | Playback, watch state, lists and channels, discovery | 080 §2 |
| 13 | Kodi's own watched/resume items | Mirror + adopt changes | 040 §6 |
| 14 | Collections | Offer the next film at the end, no automatic start | 050 §5 |

## Planner decisions (technical, within the above)

| Topic | Decision | Chapter |
|-------|----------|---------|
| Store | SQLite `library.db`, WAL, one module owns SQL | 030 §1 |
| Metadata cache | In the same DB, TTL 12 h for returning series, 30 days otherwise; stale-while-refresh | 030 §3 |
| TV UX (user, 2026-10-01) | Context menu: <= 6 top entries + "Další…"; Home: max 3 default rows per section (editor unchanged); our menu items are called Filmy / Seriály and Kodi's are hidden by default | 080 §4, 070 §6 |
| Widget manager (user, 2026-10-02) | "Widget" is the name; Window 1123 = list of active widgets + button column (Nahoru, Dolů, Upravit, Odebrat, switches, Obnovit výchozí, Uložit, Zrušit), draft saved at once with one `ReloadSkin()`, one edit window with 4 values; quick entry from Home is the Info key on a menu item (Kodi has no context menu on static lists) | 070 §5 |
| My lists buttons and click (user, 2026-10-01) | AI / Přidat / Smazat vše stay on top of My movies / My series (`SpecialSort=top`); movie click follows `default_movie_action`; the context menu of the lists comes with L5 | 060 |
| One TMDb cache (user, 2026-10-01) | `meta` is the only cache: old season / episode listings, My list dialog, collection overviews read and write the canonical keys; `TMDbCache.py` is a facade over `meta` (`http:<sha>` keys), `tmdb_cache.json` retired | 030 §3, 140 |
| Natural end (user's real test, 2026-10-01) | The plan is prefetched at playback start; at the natural end the next episode starts even if the dialog never ran (seek to the very end) and the end always counts as watched, whatever the last position poll saw | 050 §4, 140 |
| Canonical URL | One fixed URL per movie / episode; options travel in a Window property | 020 §3, 040 §2 |
| Tracker home | Service main loop; plugin never tracks | 020 §2 |
| Resume start | Kodi's own bookmark via `PlayMedia(url,resume)` + one safety seek | 040 §4 |
| Gaps in watched episodes | Next-up follows the latest watched episode by order | 050 §2 |
| Autoplay mechanics | Queue next canonical URL in the Kodi playlist; one `playnext()`; never stop+PlayMedia | 050 §4 |
| Kodi change adoption | 5 s check of the focused addon container + check after stop | 040 §6 |
| Slot rendering | Visibility per style variant, content via `widget_row` fast path | 070 §2 |
| Testing | Offline unit suite + fixture provider with local videos; targeted only | 120 |
