diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0344b16..0f017a0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,7 +21,125 @@ Each version entry uses these sections (include only those that apply):
## Unreleased
+### Changed
+- **The pool index is keyed by the movie, not by a file path** (index **v2**,
+ `src/core/movie.py`). A record used to describe one *file*, so a movie's
+ metadata was a passenger on one particular file — which is why the "primary
+ version" had to carry the tags, why removing it needed a metadata-rescue
+ hack, and why renaming a multi-version movie had to be disabled outright.
+ Now the record **is** the movie (`tmdb-603`, or a diacritics-folded
+ `name-
-` slug without an id) and owns its files:
+ ```json
+ "tmdb-19995": {"title": "Avatar", "year": "2009", "tmdb_id": 19995,
+ "library": "Filmy", "tags": [...], "csfd_url": …,
+ "media": [{"role": "video", "label": "", "file": "…"},
+ {"role": "video", "label": "3D HSBS", "file": "…"}]}
+ ```
+ Every version of a film therefore reads and writes **the same** metadata —
+ adding a version inherits it, removing any version (including the one shown
+ in the table) leaves it intact, and the rescue hack (plus the interim
+ `File.is_primary_version` flag) is gone. A newly seen file also joins an
+ existing record of the same identity instead of blanking its metadata.
+ `Movie.desired_layout` derives where the files belong from the record alone
+ (one video → flat in the library, two or more → its own
+ `Title (rok) [tmdbid]/` folder; a 3D label keeps Jellyfin's documented
+ `.3D.` spelling in both layouts, other labels use `" - label"`) —
+ **not wired in yet**: `add_movie_version` / `remove_movie_version` still lay
+ files out themselves, and the edit dialog doesn't apply a recomputed layout
+ on rename. A move now updates the record's `library` as well.
+ `check_data_consistency` compares disk against the records' media paths.
+ `File` is now a *view* on one media entry of a record (same public
+ interface); `PoolIndex` gained `get_movie`/`set_movie`/`delete_movie`/
+ `rekey_movie`/`all_movies`/`find_movie_by_media`/`record_for`, and
+ **migrates a v1 index on first open** — metadata only, **no file is moved**
+ (a v1 movie already sits where v2 wants it), with the old index copied to
+ `.Curator.!index.v1.bak` first.
+
### Added
+- **Multiple versions of one movie** (Jellyfin's own "multiple versions" —
+ 2D+3D, 4K+1080p, Director's Cut, …). A movie is identified by its
+ `(title, year, tmdbid)` and stays a **flat file** while it has exactly one
+ playable version (today's layout, unchanged). Adding a second version
+ **promotes it automatically** into its own folder — Jellyfin's required
+ shape, every file prefixed with the exact folder name:
+ ```
+ Title (rok) [tmdbid]/
+ Title (rok) [tmdbid] - Výchozí.ext
+ Title (rok) [tmdbid] - 3D HSBS.ext
+ ```
+ *Upravit film* gets a **„Verze"** list — **"➕ Přidat verzi…"** (pick a file,
+ then a small `VersionLabelDialog`: a **3D formát** preset — its label becomes
+ exactly `3D