Iwork-studio

Latest version: v2.6.1

Safety actively analyzes 1035885 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

2.6.1

The trust patch: the safety promise, now true in every corner.

- **Open files are refused by every write.** Edits made without the app (cells, formatting, rows, tables, designs, Keynote find/replace, restore) now check whether Numbers, Keynote or Pages has the file open. Before, the app's next save could quietly overwrite the change.
- **Pages find and replace keeps your formatting.** Only the paragraphs that contain the text are rewritten; before, the whole document's formatting was reset. Finds that span a paragraph break are refused (use `pages_set_body`).
- **Backups are private and bounded.** They now live in `~/.iwork-studio/backups/` (or `IWORK_STUDIO_BACKUP_DIR`), never beside your file, so they don't fill or sync your iCloud Desktop and Documents. Numbers and Pages backups were never pruned before; now every file type keeps its last 10. Older `<file>.backups/` folders are still listed and restorable.
- **The edited cell is checked too.** `numbers_edit_cell` reads the cell back from the saved file and reports what it read.
- **The folder fence covers deck outlines.** Images and chart/table sources in `keynote_build_deck` resolve against the deck's folder and must be inside the allowed folders.
- **Timeouts leak nothing.** Scripts and their parameters (such as an export password) go to the app on stdin, never on the command line. A timeout is a clear `AppTimeoutError`, and the document is closed before any rollback. `AutomationDeniedError` says exactly where to allow access.
- **Installs come from PyPI.** The installer pins the released version, and no longer needs Apple's developer tools.
- **Honest docs.** The instructions now name the writes that don't take `dry_run`. Example names are neutral.
- **Try it with nothing of your own.** `iwork_samples` copies synthetic sample files (sales data with an English and an Arabic sheet, plus a deck outline) into a folder you choose.
- **A clearer `iwork_capabilities`.** It reports the folder fence, the backup folder, app versions and three prompts to try.
- **A 15-second demo** at the top of the README, and issue templates for refusals, requests and showing your deck.

2.6.0

Sorting that can't break your formulas.

- **Safe sorting:** Numbers' own sort keeps each formula's references relative, so a formula that reads another row (say `=B2*0.1` under a base-figure row) ends up reading the wrong row or `REF!`. Locking the reference (`$B$2`) doesn't help. `numbers_sort` now spots those formulas and refuses before Numbers touches the file, naming the first one. Formulas that read another table (an inputs table) are kept by Numbers, so those tables still sort in place.
- **Sort into a new table:** `numbers_sort` with `to_new_table` leaves the table, its formulas and its charts exactly as they are and puts a sorted copy of its values in a new table on the same sheet (`new_table_name`, default "<table> sorted"). The copy is checked against the table row by row, and the original against itself. Chart the copy with a Keynote chart slide (`keynote_build_deck`).
- **Fix:** `numbers_set_formula` refused formulas with `*`, `/`, `<>`, `<=` or `>=`, because Numbers reads them back as `×`, `÷`, `≠`, `≤`, `≥`. They're now treated as the same formula.

2.5.0

Load only what you need.

- **Toolsets:** `IWORK_STUDIO_TOOLSETS` (or `serve --toolsets`, or the Desktop extension's *Toolsets* field) loads only the tool groups you pick: `files`, `numbers`, `keynote`, `pages`, `design`. A Keynote-only setup goes from 64 tools to 29, so the AI reads less and picks better. Capabilities, read, find, undo and the kit list always load; prompts appear only when their tools are loaded; `iwork_capabilities` reports what's active. The default is still everything.
- **Sharper "when to use it" guidance** on every tool: when to use it, when not to, and the sibling to use instead (e.g. `numbers_set_headers` vs `numbers_set_dimensions` vs `numbers_set_cell_style`).
- The README's version badge reads PyPI, and the release checks every place the version appears.

2.4.1

Clearer tools for the AI that calls them.

- **Every parameter is described** (all 64 tools): what it takes, its format and its default, e.g. `cells` in A1 notation, `kit` as a preset, saved or custom kit.
- **Every tool says when to use it**, and which sibling to use instead (`iwork_list_backups` → `iwork_restore_backup`, `keynote_add_slide` vs `keynote_duplicate_slide`, `pages_replace_all` vs `pages_set_body`…). A test keeps both complete.
- A `Dockerfile` for MCP directories that check a server in a container.

2.4.0

Data to deck, on brand.

- **Chart and table slides:** a slide in `keynote_build_deck` can carry a chart or a table, from data or straight from a Numbers table (the header row gives the columns, the first column the rows; pick columns by name, cap the rows). Everything is validated before the deck is created.
- **Tables on Keynote slides:** `keynote_add_table` adds a table, styled from a design kit: header band, Arabic-aware fonts, banding, numbers right-aligned. Every cell's value, font and colours are read back; text Keynote would turn into a number rolls back with a hint. Every other Keynote write now checks that no table changed.
- **Your brand kit:** `iwork_extract_design_kit` reads the fonts (Latin and Arabic) and colours from a deck or table that already has your look; `iwork_save_design_kit` / `iwork_delete_design_kit` keep kits by name, usable anywhere a kit goes. Contrast is still checked; presets can't be shadowed; nothing is replaced without `overwrite`.
- **Design review:** `keynote_review_deck` renders the deck through Keynote and compares every drawn line with its text box. Errors: text off the slide or past the bottom of its box. Warnings: text Keynote had to shrink to fit, overlapping boxes, text under 18 pt, crowded slides, long titles. `keynote_slide_image` returns a slide as an image so an agent can look at it.
- **Prompts:** *Pitch deck from an outline*, *Report deck from a Numbers table*, *Restyle with my brand*, *Make this table look designed* — ready-made workflows in clients that show MCP prompts.
- **Claude Code plugin:** the repo is a plugin marketplace (`/plugin marketplace add Arkanji/iwork-studio`); the plugin brings the MCP server and the skill together. Every tool now has a title, the extension and plugin carry an icon, and there's a privacy policy (`PRIVACY.md`: everything stays on your Mac).
- **Fixed:** design kits sized type for a 1920-wide slide, so on 1024-wide decks (most of Apple's themes) text came out nearly twice as large as intended; sizes now follow the deck's width.
- **Fixed:** `iwork_export` slide images with `image_format` failed in Keynote (`-1700`); slides now export in Keynote's format and are converted with macOS `sips`.
- **Live runs:** `scripts/live.sh` runs the Mac suite unattended, so it can run on a schedule; `scripts/probe_keynote_tables.py` maps what Keynote's table scripting can do.

2.3.0

Reach + decks: designed documents, previews, one-click install.

- **Build a deck from an outline:** `keynote_build_deck` makes a new deck from a theme and a list of slides (title, bullets, notes, image, layout), with an optional transition and design kit. Every slide is read back; a mismatch removes the new file. `keynote_set_slide_text` fills an existing slide's title and body.
- **Design kits:** six kits (executive, banking, classic, teal, analytics, midnight) — a Latin + Arabic font pair bundled with macOS, a WCAG-checked palette and a type scale. `keynote_apply_design` and `numbers_apply_design` restyle a deck or a table; custom brand kits are contrast-checked. A design guide tells agents how to write slides and tables that look designed.
- **Dry run everywhere:** every write that changes an existing file takes `dry_run=true` — the real change on a throwaway copy, with every check, returning exactly what would change.
- **Install anywhere:** packaged for PyPI (`pip install iwork-studio`), listed for the MCP Registry, and shipped as a one-click Claude Desktop extension (`.mcpb`, with a folder picker). Releases publish automatically from a tag.
- **Unattended live runs:** `scripts/live.sh` runs the Mac test suite, logs it, and quits the iWork apps the run opened (never an app with your documents).
- `iwork_capabilities` describes the current routes.
- **PDF checks now use pdfminer.six (MIT)** instead of PyMuPDF (AGPL), so the whole package is permissively licensed. Arabic text layers are normalised (NFKC), so shaped letters and the lam-alef ligature match plain text.

Page 1 of 2

© 2026 Safety CLI Cybersecurity Inc. All Rights Reserved.