Skip to content

v0.3.0

Latest

Choose a tag to compare

@tvolodi tvolodi released this 16 Jul 16:14
3ad63a7

What's new

Component-instance drift/override visibility

  • \penpot_get_shape\ now always includes a \componentInfo\ field with \linkState\ (\linked\ / \detached\ /
    ot-an-instance\ / \main-component-root), and for same-file linked instances a \driftedFields\ array listing which visual properties differ from the main component definition.
  • \penpot_find_shapes\ includes \linkState\ and \driftedFields\ in each match entry.

File snapshot / version history

Full suite: \penpot_list_file_snapshots, \penpot_create_file_snapshot, \penpot_restore_file_snapshot, \penpot_rename_file_snapshot, \penpot_delete_file_snapshot, \penpot_lock_file_snapshot, \penpot_unlock_file_snapshot, \penpot_get_file_snapshot_data.

Fully headless OIDC/SSO login

Set \PENPOT_OIDC_USERNAME\ + \PENPOT_OIDC_PASSWORD\ to drive the OIDC redirect flow over plain HTTP — no browser needed. Handles multi-step IdP flows (Keycloak, Authentik, Dex).

Checkpoint persistence

Set \PENPOT_CHECKPOINTS_PATH\ to a local directory; checkpoints survive server restarts.

Stale-write detection

\PenpotStaleWriteError\ is thrown by all write tools when \update-file\ reports concurrent edits from another session.

Unit test coverage

New test files for RPC client, exporter client, OIDC auth, snapshots, checkpoints, export tool, text replacement, and component drift — all running in CI.