Cockpit v0.11.2 (also tested under v0.10.2, same behavior)
Create a new collection, add a field with type "multipleselect" and the following Options JSON:
{
"options": ['A', 'B', 'C']
}
Create a new entry, check A, B and C, save
Edit the Options JSON of the multipleselect to:
{
"options": ["X", "B", "C"]
}
edit the entry you saved previously.
Result:
The Option "A" is no longer visible when editing the entry, but it's still in the JSON of this entry
The entry will always have "A" as one of the selected options in its JSON, there's no way in the GUI to de-select "A" since it isn't visible, and it doesn't matter if you save the entry again, change the selected options etc. The user of the CMS has no way of de-selecting "A"
On the page that lists all the entries of the collection, in the column that previews the value of the multipleselect, "A" is still being displayed:
My Opinion:
I see why "A" doesn't immediately get removed from the JSON of the entry, since cockpit in general is built in a way where field-definition changes don't modify all entries of that collection.
I also see why there's (not yet?) a way to de-select "A" in the GUI when editing the entry, since it could make for an akward GUI and could confuse the user to display options that are no longer selectable and only give the user the option to de-select them
When consuming the JSON in another application, you can prevent the usage of selected options that can't be selected anymore by also reading the fields-definition and only taking the selected options that are specified in the field-definition
However, the one point that is imho truely a bug is that the preview column still displays those options that can't be selected/deselected anymore. Maybe the preview should do the same as what I said for external applications that consume the JSON, it should take the options that are allowed according to the current field definition and only display those selected options in the preview?!
Steps to reproduce:
Result:
My Opinion: