openpencil/packages/docs/pl/programmable/cli/inspecting.md
Danila Poyarkov b52d7e2651
feat: control documents, history, settings, and tools from the CLI and MCP (#871)
* fix(app): record MCP and CLI structural edits as undo steps

The automation bridge ran non-atomic tools, render, and eval without an
undo entry, so Edit > Undo could not revert layers an MCP client or the
CLI created, deleted, or rearranged. Snapshot the page around these
edits as the AI chat does, and skip the entry when nothing changed so
read-only scripts leave the history alone.

* feat(app): activate documents, undo, redo, and change settings over automation

Add activate_document, undo, redo, get_settings, and update_settings to
the app's automation bridge. Settings cover appearance, snapping, canvas
rendering, recovery, and chat preferences, validated with Valibot and
applied through their owning stores; credentials, models, MCP
connections, storage, and tool access stay out of reach.

* feat(mcp): expose document activation, history, and settings tools

* feat(cli): manage documents, history, settings, and tools in the running app

Turn documents into a command group (list, open, new, save, close,
activate), add undo, redo, and settings get/set, and add tool
list/describe/call so every MCP tool runs from the shell, against the
running app or headlessly on a file.

* docs: document app control from the CLI and MCP

* fix: never prompt in the app from automation closes and saves

close_file opened the app's Save changes dialog, which an agent cannot
answer: the call timed out and the dialog stayed open. It now fails on
unsaved changes unless the caller passes unsaved "save" or "discard"
(CLI --save or --discard). save_file and new_document no longer open a
Save dialog for a document that was never saved, report a failed save
as an error, and leave the document untouched when the path is refused.

* docs: describe non-interactive close and save

* fix: address review findings in app automation

Keep a document's source when a save to a new path fails, report
vector-edit undo and redo no-ops as unapplied, echo only the applied
patch from update_settings so writing cannot read settings, reject
tool call --write/--output without a file, and stop settings get from
following inherited keys.

* fix(app): record render undo on the page that receives the layers

A render into a parent on another page was snapshotted against the
target page, so undo left the new layers in place. Snapshot the page
that contains the parent instead, and document that eval edits made
after switching pages stay outside the undo step.

* feat(app): limit automation undo to its own steps and expose design check settings

The undo history is shared with the person in the editor, so an agent's
undo could revert the user's last edit. Automation undo and redo now act
only on steps made through the bridge, and only while they are newest;
otherwise they fail and leave the history alone. Vector edit mode's
session history is off limits entirely. Settings automation also covers
the design check preferences that landed on master.
2026-10-04 16:02:36 +00:00

2.8 KiB

title description
Przeglądanie dokumentów Drzewo obiektów, wyszukiwanie według nazwy i typu oraz właściwości z terminala.

Przeglądanie dokumentów

CLI pozwala analizować dokumenty projektu bez uruchamiania edytora. Te same polecenia działają z otwartą aplikacją komputerową, jeśli nie podasz pliku.

::: tip Instalacja

npm install -g @open-pencil/cli
# albo
bun add -g @open-pencil/cli

:::

Informacje ogólne

Liczba stron i obiektów, używane czcionki oraz rozmiar pliku:

openpencil info design.fig

Drzewo obiektów

openpencil tree design.fig

Wyszukiwanie obiektów

Według typu:

openpencil find design.fig --type TEXT

Według nazwy:

openpencil find design.fig --name "Button"

Zapytania XPath

Selektory XPath wyszukują obiekty według typu, atrybutów i położenia w drzewie:

openpencil query design.fig "//FRAME"
openpencil query design.fig "//TEXT"                    # Wszystkie obiekty tekstowe
openpencil query design.fig "//COMPONENT"               # Wszystkie komponenty
openpencil query design.fig "//INSTANCE"                # Wszystkie egzemplarze
openpencil query design.fig "//FRAME[@width < 300]"     # Ramki węższe niż 300 px
openpencil query design.fig "//*[@cornerRadius > 0]"    # Obiekty z zaokrąglonymi narożnikami
openpencil query design.fig "//*[@visible = false]"     # Ukryte obiekty
openpencil query design.fig "//SECTION//TEXT"            # Tekst wewnątrz sekcji

Nazwy dostępnych atrybutów, takie jak fontSize, layoutMode i strokeWeight, pozostają zgodne z API.

Właściwości obiektu

openpencil node design.fig --id 1:23

Strony i zmienne

openpencil pages design.fig
openpencil variables design.fig

Praca z otwartą aplikacją

Jeśli aplikacja komputerowa jest uruchomiona, nie podawaj ścieżki pliku. CLI połączy się przez RPC z otwartym dokumentem:

openpencil documents list
openpencil tree
openpencil tree --document-id tab-123 --page-id 0:1
openpencil eval --document-id tab-123 --page-id 0:1 -c "..."

W procesach automatycznych najpierw wywołaj openpencil documents list --json, a potem jawnie przekazuj --document-id i --page-id. Otwieranie, zapisywanie, przełączanie i zamykanie dokumentów, cofanie zmian, ustawienia i wywoływanie dowolnych narzędzi edytora opisuje Controlling the App.

Kontrola jakości

Sprawdzanie nazw, układu, struktury i dostępności:

openpencil lint design.fig
openpencil lint design.pen --preset strict
openpencil lint design.fig --rule color-contrast
openpencil lint design.fig --list-rules

Wyjście JSON

Wszystkie polecenia obsługują --json. Wynik można przekazać do jq, CI albo innego programu.