Repository navigation
v2.2.3
Install or upgrade with npx framesmith, or npm i -g framesmith.
framesmith never saves over an unreadable workspace.json
In a bound repo, if .framesmith/workspace.json can't be read, for example because it has git merge-conflict markers or is still being written, framesmith used to keep its in-memory copy and then write that copy over the file on its next workspace or project change. In a merge conflict, that discarded both sides without warning.
Now reads keep using the in-memory copy, with one warning, and every workspace or project change is refused with an error until the file parses again. Through MCP the error reaches the agent, which is asked to let you resolve the conflict rather than choose a side. framesmith also no longer treats a failed read as "seen", so a finished write is picked up even when it keeps the same timestamp. (#222, #223)
Workspace and project design systems keep their shadows
Workspace and project design systems dropped their elevation (shadow) tokens, and a later dark-colour edit replaced the whole dark layer. So generate_design_system at workspace or project scope lost its shadows, and screens under those layers showed $elevation.* as unresolved text instead of a shadow. Every token category, including elevation and the dark theme's elevation, now merges per token. (#225)
The version hash docs are corrected
The version hash covers the whole set of tokens a canvas inherits, so any edit to a workspace or project design system changes the hash of every canvas under it, except a token a canvas overrides itself. That behaviour is deliberate and unchanged; the v2.2.2 release notes described it wrongly and have been corrected. Tests now pin both hash formats to fixed values. (#221, #224)
Upgrading
- Lost shadow tokens don't come back on their own. They were never saved. If you set up a workspace or project with
generate_design_systembefore this release, run it again for that layer, or setelevationwithworkspace_set_design_system/project_set_design_system. - A save can now be refused. In a bound repo whose
workspace.jsoncan't be read, workspace and project tools return an error instead of overwriting the file. Fix the file, then retry.