Tracks plugins which were installed only so that one particular file could be opened, and which are to be removed again once they have served that purpose.
Two things happen to a fleeting plugin. It is loaded like any other plugin, because a document cannot be read without it, but its objects are kept out of the icon panels and out of search — the user asked for a file, not for a new set of components. And the package behind it is deleted from disk again.
The deletion cannot happen while Grasshopper runs. .NET offers no way to unload an assembly from the process, so the earliest a package can go is at shutdown, and on Windows not even then, since the file is still mapped. So the packages to delete are written to a ledger in the settings folder, that ledger is worked through at every startup before any plugin is scoped, and entries survive there until the deletion actually succeeds. A session which crashes therefore still cleans up after itself on the next launch.
What the package server can do about one missing plugin.
Establishing this takes a round trip to the server, so it is done once, in the background, and the answer is carried around afterwards. An offer which is not PackageOffer.IsAvailable names the reason in PackageOffer.Obstacle, which is what the user is shown in place of a button they cannot press.
A restore can be permanent, which is an ordinary installation the user keeps, or fleeting, which lasts only as long as this session and leaves the plugin's objects out of the icon panels — see FleetingPlugins. The mechanics are identical either way; only the bookkeeping differs.
A record of one plugin which a document relied on at the moment it was saved. Documents store these so a later session can find out what is missing — and offer to fetch it — before deserialisation starts discarding objects whose types it cannot resolve.
The complete set of plugins a document relied on when it was saved, stored in the GHZ file so that opening it can establish what is missing before deserialisation quietly discards every object it cannot resolve.
This supersedes the Plugins.txt entry which earlier versions wrote and which nothing ever read.
A pointer to a GHZ file containing a bunch of components acting as a snippet. The basic descriptive properties (Snippet.Nomen, Snippet.Icon) are read lazily from standalone chunks in the archive so the snippet can be drawn in the UI without deserialising the document graph. The document is only opened when a Snippet.Preview bitmap is requested.