Expand description
Which CSP version saved a file, and what older versions will make of it.
CSP writes no version number of its own (Project.ProjectInternalVersion
is “1.1.0” in every file from 2017 to 2026). What changes is the schema
registry: each CSP release registers every column it knows in
ParamScheme, and labels a file has are never removed. So the registered
labels tell the newest CSP generation that saved the file.
How an older file shows that a newer CSP saved it again depends on the saver: CSP up to 2.x (and .cmc saves up to 4.2) appended the new labels after the old rows, while CSP 3.0 and newer rewrite a .clip’s registry in their own order, keeping labels they retired (CSP 5.1.4 was seen doing this). Appended blocks and retired labels both mark a resaved file.
Since 1.12 CSP marks its own file format level with Layer.Has1_0_N
columns (N = 6 … 19 so far). They are registered with lock type 4 and
lock scope 2 (the canvas): a CSP that meets a set column it does not know
locks that scope, or only the layer when the alternative lock (1, 0,
from Has1_0_8 on) is registered. Without the alternative it locks the
whole canvas, unless the file carries version compatibility information
(Preferences > File > Version compatibility, since 1.13.0).
The generation table and the CSP versions are learnt from the corpus and
CSP’s release notes; see docs/spec/09-versions.md.
Structs§
- Generation
- A group of CSP releases that register the same new columns.
- Version
Info - What a file tells about the CSP versions that saved it.
Constants§
- GENERATIONS
- Known generations, newest first. A file belongs to the first one whose markers are all registered; files without any marker are older than all.
- RETIRED_
LABELS - Labels older CSP versions registered and newer ones no longer do, with the first generation that stopped registering them. They stay in files made before (saves never remove labels).
Functions§
- generation_
of - The newest generation whose markers are all in
labels.