kapy academy

Versions and What Goes Wrong

6 min readUpdated Aug 2026

A placed object keeps a link to the definition it came from, and that definition can change under you. The first row of the popover is Version, and it is where you decide whether this placement follows the author's newest work or stays on the release you tested.

Version is the first row of the panel, above everything the object exposes.
Version is the first row of the panel, above everything the object exposes.

Choosing a version

What the row offers depends on where the object came from.

For a store object it is a dropdown: Latest, followed by every approved release as a semantic version such as v1.2.3. Latest is not a version of its own. It resolves, each time the source is fetched, to the highest published release at that moment.

For a local object, one of your own, the row is a locked caption reading Latest. Local objects have no version history. A placement of one always tracks the owner's most recently saved draft, which is exactly what you want while you are still developing the object and exactly what you cannot turn off once you are not.

The practical rule: pin a store object to an explicit version as soon as the part it is in matters. A pinned release is immutable and cached locally, so it will build the same way next month. Latest and drafts are always fetched from the network and can change without you touching the file.

Refreshing by hand

When a placement is on Latest or on a draft, the popover shows an action row, ↻ Refresh to latest. It throws away the cached copy of the source and replays every copy in the item against a freshly fetched one.

Use it after you save a change to one of your own objects and the placement in another document has not caught up, and use it when an unavailable source may have come back.

Swapping the object itself

Changing the version is not the only thing you can change about a placement. The object in it can be swapped, and the placement survives the swap: it keeps the face it is anchored to and the angle you turned it to.

Open the placed item from the timeline so its popover is up, and leave it up. Then open the SmartObjects window and click a different tile: that click fills the placement you have open rather than starting a new one somewhere else. There is no confirmation step and no undo prompt. That is also why the picker looks shorter while an item is open: everything it is still showing you is something that can go in the slot.

Reading the states

Each copy in a placement is replayed on its own and reports its own outcome: succeeded, failed, still pending, or unavailable. One copy can be red while its siblings are fine, so read the Copies list before you assume the whole item is broken.

What the popover tells you
Message What it means What to do
Loading object source… The definition is being fetched Wait. It becomes one of the rows below
Pick a smart object to fill this placement. The item exists but has no object in it Choose one from the picker while the item is open
This smart object's source is unavailable — parameters can't be edited. (amber) The definition could not be fetched, so the parameter section is hidden Press ↻ Refresh to latest, or pick another version. If the object came from the store, it may have been withdrawn
Placement failed to regenerate. (red) The definition loaded but the replay did not produce geometry Undo the last parameter or position change, or re-target the placement onto a different face

The errors the rebuild reports

These come from the rebuild rather than the popover, and each names a specific cause.

Smart-object source is unavailable. Same cause as the amber banner: the definition could not be fetched.

Target body for smart-object placement is missing. The body the placement was attached to no longer exists. A boolean consumed it, or the feature that made it was deleted. Point the placement at a body that exists, or restore the one it wanted. Working with Several Bodies explains why deleting a body-making feature leaves this kind of hole.

Smart-object replay failed: a TopoId could not be rebinded to the destination. The object's steps refer to a face or edge of the host that can no longer be recognised, because a feature above the placement changed the shape it was built against. Move the placement below the change in the timeline, or re-place it on the face as it now is.

Smart-object placement must be created on a planar face. A face-pipeline object was asked to sit on something curved.

This smart-object host kind is not supported yet. The object was authored against an anchoring this release does not implement. Nothing you can change in your document fixes it.

Smart object source failed to load, as a toast at placement time. The definition never arrived, so no feature was created at all. Nothing to clean up; try again.

A smart object cannot contain itself and Smart-object nesting is too deep. You are placing an object inside the document that defines it, or inside a chain of objects that is already long enough. Break a level out of the chain.

When the object disappears from the store

A withdrawn listing drops out of the picker without a word. Anything you already placed keeps working until its source is next fetched, and then reports unavailable, not "removed". The message is the same one you get from a network failure, so a placement that will not load is worth checking twice: try Refresh, and if that fails repeatedly, open the store page and see whether the listing is still there.

This is the strongest argument for pinning. A pinned release is cached, so a placement that has already built once is not at the mercy of a listing you do not control.

See also

Discord