Repository navigation
Releases: jangtrinh/design-os-studio
Release list
DESIGN:OS Studio 0.5.0 — Components
Pack Components (milestone v0.5 Components): slots and a stronger Check designs.
Added
- Slots.
- Create a slot on a component and set its rules in the slot settings panel: minimum and maximum children, preferred components, stretch on insert, and show empty by default (#32).
- Edit slot content in an instance without detaching it. The limits hold on every edit: draw, paste, drag, drop, group, ungroup, and placing images or video (#34).
- An empty slot shows a placeholder with a + that opens the preferred-instance picker. Inserting stretches the child to the slot when the slot asks for it (#150).
- Migrate to slot turns an instance-swap or boolean region into a slot and keeps each instance's content, in one undo step (#151).
- Dev Mode codegen emits slots: one parameter per slot with the slot's own layers as the fallback, in React, Tailwind, SwiftUI and Compose (#152).
- Component playground in Dev Mode: try a component's properties and variants without editing the file (#159).
- Check designs.
- Flags hard-coded numbers that exactly match a number variable (#154).
- Suggests variables and styles from enabled libraries (#155).
- Audits text and overrides inside component instances. A finding inside a component is reported once, on the main component (#52).
- Contrast checks use an opaque parent or sibling as the backdrop (#65).
- Chrome design standard. One spacing ladder, concentric radii (frame 14, control 6, inset 8), pills for chips and dialog buttons, a neutral selection fill, 10 px captions, and Roboto Mono for code (#580).
Fixed
.figfiles.- Export uses the field numbering, types and enum values from Figma's own files (#110).
- Slot preferred values are read and written as Figma's real object (#107).
- Slot content ids are stored per property, and older files load unchanged (#108).
- The slot-list parser rejects the raw-number fallback (#111). Unknown slot settings keys are kept (#112).
- Nested instance swaps update the shell's fills, strokes and properties (#525).
- Instance text overrides with several paragraphs or mixed styles are kept (#518).
- Resized instances apply Stretch and Scale constraints to their children (#522).
- Paste from Figma remaps slot and instance-swap ids and drops unknown ones (#109).
- Styles. Applying a colour style recolours every text run, in one undo step (#68).
- Agent tabs.
- Antigravity and Grok tabs start again: Studio registers its MCP server in the way each CLI accepts (#642, #646).
- Claude, Grok and Antigravity tabs load the session hooks; Codex tabs keep the existing status detection (#647). The designos-studio skill and rules are reachable from every tab (#648).
- Codex tabs and Agent Chat pass the session folder and workspace to designos-mcp (#649).
- A tab that fails to start shows the cause and a way to continue (#650).
- Windows CI: terminal tests use the system temp folder (#581).
v0.4.1
Patch for Layout 2.0 (milestone v0.4.1 patch): fixes found after 0.4.0, many of them from rendering the Untitled UI PRO v8.0 kit against Figma.
Fixed
- Grid and auto layout.
- Grid placement pins and spans in Dev Mode now match the solver (#531).
- An instance that restates its grid track list keeps its children in the right cells and its track sizes in the right order (#539).
- Older grid alignment data migrates on load. Unoverridden alignment axes stay in sync with the main component, and large margins centre correctly (#541).
- Fill children are measured the same way in flow and grid layouts (#530).
- Changing a frame's direction no longer stretches a child twice, and an all-stretch line shrinks back. CSS export writes
align-self, and a grid child exports its solved size (#532). - A bound stroke weight is resolved during relayout (#507).
- Undo and redo re-solve only the layouts they touch, so stroke colour, move and effect edits cost no relayout (#509).
- The delete action is hidden on custom-sized implicit grid rows (#562).
- Preset frames get the catalogue corner radius (#498).
- Rendering.
- Frames with "First on top" canvas stacking paint and hit-test in Figma's order on the canvas, in exports and in prototypes. The Layers panel keeps layer order, as Figma does (#517, #527).
- Strokes on per-side borders follow corner radii (#526). Outside-aligned strokes clip with imported stroke geometry (#524).
- Radial, angular and diamond gradients use centred handles (#529).
- Soft line breaks (U+2028) break the line without adding paragraph spacing (#523).
- A bound colour variable's alpha is applied once (#516).
- The mask stand-in no longer overdraws or disappears at sub-pixel sizes (#500).
- Children of unknown layer types paint and can be selected (#511).
.figimport and export.- Per-side stroke weights are imported only when they differ, and partial overrides merge (#515).
- Style records no longer turn into canvas nodes in libraries, and instance layout alignment survives a round trip (#546).
- An instance whose auto layout was removed writes
stackMode: NONE, so the removal survives a round trip (#539).
- Files and libraries.
Downloads: macOS .dmg (universal) and .tar.gz; Windows .zip; Linux .deb and .tar.gz. Verify with SHA256SUMS.
designos 0.4.0 — Layout 2.0
Pack Layout 2.0 (milestone v0.4): auto layout and grid behave the way Figma does.
Added
- Grid auto layout.
- More than 8 rows and columns (#24).
- Auto-placed items and auto rows.
.figfiles keep their version 106 track maps (#25). - Children align horizontally and vertically inside their cell (#145).
- Dev Mode prints CSS, Tailwind and React grid code from the real tracks and placement (#146).
- Edit tracks on the canvas and in the Properties panel: insert, delete, resize, and drag a track to reorder it in one undo step (#144).
- Auto layout.
- Layout guides match Figma (#147).
- Alignment: Stretch, Left, Center and Right.
- A fixed column or row width.
- Auto count.
- Show or hide each guide.
- All of it round-trips through
.fig.
- Check designs (#35).
- A panel that audits the page for low contrast, unbound colours, detached styles and detached instances.
- A one-click Fix per finding, and Fix all.
- Contrast fixes skip text when something painted under it would make the check unreliable.
- Text runs that have their own colour keep it when a variable or style is applied.
- Vectors.
- Export.
- Frame and device presets match Figma's current list (#149).
- Board timer for facilitators in the board toolbar (#338).
- Layers panel shows a label for each layer type (#405).
- Variables from a library are grouped under From library and are read-only (#279).
- Style editing. Drag the label prefix to scrub number fields in the style popover (#69).
.figround trip.
Fixed
- An open library file could be emptied (#504). Switching tabs or going Home could write an empty document over the open file and store an empty version. Unsaved edits are now saved before the tab is parked.
- Crash on large pages at rest (#467). Some large pages with many effects crashed about 1 s after opening. The full-quality refine is now split over several GPU submissions; Metal allows about 2,047 render passes per submission.
- Security: copied or selected content is never written into a Shell tab (#513).
- Rendering.
- Layout correctness.
- Fill siblings share the space a clamped child cannot use (#60).
- Grid tracks size from clamped children (#61).
- The grid axis convention is the same in layout, export and the Properties panel (#63).
- Variable-bound sizes resolve in headless relayout (#62).
- Deep re-solves have a budget, and nothing past it goes stale silently (#59, #489).
- Files and saves.
- Studio tells you when numbers that were not numbers (NaN or infinity) were replaced (#57).
- Malformed native and library files open with a warning and keep a backup of the original (#7, #104). An existing
.bakis never overwritten (#102). - Repaired original bytes are released when the tab closes (#103).
- Zip bombs in
.figfiles are rejected before they are buffered (#9). - Atomic save edge cases are handled (#4).
- NaN and infinity never reach grid track strings, variables or the clipboard (#71).
- Components and styles.
- Agents and live sync.
- Idle CPU is back to 0% (#12).
Changed
- One auto layout solver. The editor, the exporters and the MCP server share it (#30).
- The GPU refine has a program ceiling, and its VRAM budget counts the root target (#83).
- The homepage is a dark landing page with the 0.3.0 film.
Under the hood
- The document model has comment author identity (#351) and 15 easing types (#139). The editor does not write comment author identity yet (#472).
Known issues
- Writing a large
.figand reading it back adds nodes on every cycle, and one nested instance can lose its centred alignment (#546). In 0.3.0 such files could not be written at all. - The Windows test job is red (#487). Windows and Linux builds are tested by their users; releases are verified on macOS.
- Follow-ups from the Layout 2.0 reviews ship in v0.4.1.
Install
- macOS: open
designos-0.4.0-macos.dmgand drag designos to Applications. The app is ad-hoc signed, so the first launch asks for a one-time Open Anyway (System Settings > Privacy & Security). - Windows / Linux: the zip, tar.gz and .deb are attached when their builds pass. They are tested by their users; releases are verified on macOS.
- Verify downloads with
sha256sum -c SHA256SUMS.
Full changelog: v0.3.0...v0.4.0
v0.3.0
What's new in 0.3.0: Paste & Styles
Pack Paste & Styles (milestone v0.3).
Added
- Paste from Figma (#27).
- Copy a selection in Figma desktop and press Cmd+V on the canvas.
- The layers land centered in the view as one undo step, images included.
- Effect and grid styles (#27).
- Create, apply, detach and rename them from the Effects and Layout guide sections.
- They also show under local styles.
.figfiles bring their effect and grid styles with them.
- Edit a style from the style picker (#44). Changing a style's values updates every layer that uses it, as fill or as stroke, in one undo step. Library styles stay read-only.
- PDF export (#27). Selected frames export as one multi-page PDF from the Export panel. Pages are raster images for now.
- Auto layout (#27).
- Space around and Space evenly.
- Wrap in the vertical direction, with wrapped lines that can spread.
- Text wrap Balance and Pretty (#27).
- Variables (#27).
- Paint and effect opacity can be bound to a number variable.
- Variables keep their code syntax (Web, Android, iOS), which Dev Mode prints the way Figma does.
- Dev Mode: UIKit and Android XML (#27).
- Clean captures:
--no-toastand--no-captionfor--screenshot(#13).
Fixed
- Agent edits keep the open document intact (#28).
designos_apply_specand other edits made through the bundleddesignos-mcpserver no longer replace the open document. On large files, the other frames used to become empty boxes and the Text styles list emptied.- Edits are replayed as node operations: one undo step per batch, the new layer is selected, and the view stays where it was.
- Agent edits wait while you drag or edit text, then land, and they survive switching documents.
- Undo through the MCP server is refused once the canvas has reloaded, so it can never remove your own layers. Undo in Studio works as before.
- Update
designos-mcpand Studio together; the bundled server matches the app.
- Files with broken numbers open again (#42, #6).
- A value that was not a number (NaN or infinity) used to be saved as
null. The file then refused to open withinvalid type: null, expected f32. - Such values are now never written. Files that already contain them open, with each one replaced by a neutral value.
- A value that was not a number (NaN or infinity) used to be saved as
- Large pages render at low zoom (#13). The GPU canvas renders each frame in its own submission. Pages such as a 68,698-layer
.figat 3% zoom no longer show an empty canvas. - Untrusted files and saves (#1).
.fig, kiwi and.pendecoding is bounded (total inflate budget, entry and depth caps).- Saves are atomic (temp file in the same folder, fsync, rename).
- Documents with dangling or cyclic layer references are repaired on load instead of crashing; the MCP
open_filetool refuses repaired documents.
- The app reports its real version.
- The workspace version was still
0.1.0in v0.2.0, so the About dialog and the updater misreported it. - The release workflow now fails if the tag and
Cargo.tomldisagree.
- The workspace version was still
Changed
- Variable references in CSS, React and Tailwind (#27) keep the variable's case and print a fallback, for example
var(--Color-Primary, #0D99FF). - Idle full-quality GPU refine (#1).
- After 250 ms without changes, the canvas renders one uncapped frame (masks, blur, blend modes, group opacity), bounded by a 512 MiB VRAM budget.
- Any interaction returns to the capped interactive path.
- Lower memory on
.figimport. Peak RSS on large files is about 6.4 GB lower, and Phase 2 engine optimizations were added. - Removed UI that did nothing (#1).
- The README and the site open with the 70-second promo film (#48).
- Releases are verified on macOS. A failed Windows or Linux build no longer blocks the macOS release; those packages are attached when their builds pass.
Before you update
- macOS: the app is ad-hoc signed, not notarized. On first launch, open System Settings → Privacy & Security and click Open Anyway once.
- Agents: update
designos-mcpand Studio together. The bundled server matches the app. - Platforms: this release is verified on macOS (Apple Silicon). Windows and Linux packages are built by the same workflow and tested by their users. Please report anything that breaks.
Installing design:os studio
Download the installer for your platform below. Every package includes all 4 tools (designos-studio, designos, designos-mcp, and designos-diff):
- macOS (Apple Silicon & Intel Universal):
- Download
designos-<version>-macos.dmg, open it, and drag designos.app to Applications. - (Optional) Double-click
install-cli.commandinside the DMG to clear the macOS quarantine attribute and symlinkdesignos-studio,designos,designos-mcp, anddesignos-diffonto yourPATH.
- Download
- Windows (x64):
- GUI Installer (when attached):
designos-<version>-x86_64-pc-windows-msvc-setup.exeis a per-user install with no Administrator prompt. It creates Desktop and Start Menu shortcuts and registers.designosand.figfiles. It is only built when the runner has NSIS; otherwise use the ZIP below. - Portable ZIP / PowerShell: Unzip
designos-<version>-x86_64-pc-windows-msvc.zipand runpowershell -ExecutionPolicy Bypass -File .\install.ps1.
- GUI Installer (when attached):
- Linux (x64):
- Ubuntu / Debian (
.deb):sudo apt install ./designos_<version>_amd64.deb - Any Linux distro (
.tar.gz): Unpackdesignos-<version>-x86_64-unknown-linux-gnu.tar.gzand run./install.sh(installs under~/.local, nosudoneeded).
- Ubuntu / Debian (
Full instructions: docs/install.md. Verify downloads against SHA256SUMS or release-manifest.json.
What's Changed
- fix: harden untrusted-file import, atomic save, load repair, GPU idle quality and remove fake UI by @jangtrinh in #1
- fix(gpu,app): render large pages at low zoom and add clean capture flags by @jangtrinh in #13
- test(app): stop the draw selection bench flaking on shared CI runners by @jangtrinh in #33
- feat: Figma parity wave A/B — paste from Figma, effect/grid styles, PDF export, auto spacing, text wrap, code syntax by @jangtrinh in #27
- docs(plans): record that library styles are read-only in consumer files by @jangtrinh in #46
- docs(readme,pages): make the promo film the hero of the README and Pages site by @jangtrinh in #48
- docs(release): ship work in packs, one milestone per minor release by @jangtrinh in #50
- fix(doc,library,fig): keep non-finite numbers out of saved files and read old nulls back by @jangtrinh in #42
- feat(app,doc): edit a style's values from the style picker and propagate to linked layers by @jangtrinh in #44
- chore(scripts): retry roadmap claim calls when GitHub rate-limits the shared account by @jangtrinh in #82
- fix(mcp,app,doc): keep the open document intact when an agent edits it through designos-mcp by @jangtrinh in #28
- release: 0.3.0 by @jangtrinh in #55
New Contributors
- @jangtrinh made their first contribution in #1
Full Changelog: v0.2.0...v0.3.0
DESIGN:OS Studio v0.2.0 — 100/100 Figma Micro-Interactions & Native .fig Importer
Installing design:os studio
Download the installer for your platform below. Every package includes all 4 tools (designos-studio, designos, designos-mcp, and designos-diff):
- macOS (Apple Silicon & Intel Universal):
- Download
designos-<version>-macos.dmg, open it, and drag designos.app to Applications. - (Optional) Double-click
install-cli.commandinside the DMG to clear the macOS quarantine attribute and symlinkdesignos-studio,designos,designos-mcp, anddesignos-diffonto yourPATH.
- Download
- Windows (x64):
- GUI Installer: Download and run
designos-<version>-x86_64-pc-windows-msvc-setup.exe(per-user install, no Administrator prompt required; creates Desktop & Start Menu shortcuts and registers.designos/.figfiles). - Portable ZIP / PowerShell: Unzip
designos-<version>-x86_64-pc-windows-msvc.zipand runpowershell -ExecutionPolicy Bypass -File .\install.ps1.
- GUI Installer: Download and run
- Linux (x64):
- Ubuntu / Debian (
.deb):sudo apt install ./designos_<version>_amd64.deb - Any Linux distro (
.tar.gz): Unpackdesignos-<version>-x86_64-unknown-linux-gnu.tar.gzand run./install.sh(installs under~/.local, nosudoneeded).
- Ubuntu / Debian (
Full instructions: docs/install.md. Verify downloads against SHA256SUMS or release-manifest.json.
Full Changelog: https://github.com/jangtrinh/design-os-studio/commits/v0.2.0