Appearance
Support and Nori parity
The reference baseline is byfungsi/nori at e9f0fd6. The goal is Nori's useful library architecture adapted to presentations, with semantic authoring and agents as the primary workflow. Spreadsheet-specific features do not map to slide features.
| Nori capability | Lipat equivalent |
|---|---|
| Versioned canonical JSON and boundary validation | DeckDocument source and SlideScene output, validated in Rust |
| Headless core and portable contracts | No DOM/React/file/network assumptions in model/core/parser contracts |
| XLSX byte import/export | Independent PPTX byte import/export |
| CSV authoring/import convenience | Markdown slide authoring and TypeScript slide presets |
| Cell edits and atomic batches | Stable-ID node, layout, style, asset and slide operations |
| Bounded undo/redo and subscriptions | Immutable history, revisions, optimistic edit checks and subscriptions |
| Selection and dimension interactions | Node selection, drag/resize, keyboard nudges and inspector |
| Composable React views | Provider/hooks, tabs, canvas, inspector, history and diagnostics |
| Read-only attachment preview | Local-navigation DeckPreview and separate DeckPlayer |
| Strict/headless checks and packed consumer | Equivalent package, declaration, isolation and SSR checks |
| Documentation and agent-readable exports | VitePress guides, native-generated JSON schemas, llms exports |
| Browser playground | Real WASM demo with imports, editing, agent edits, playback and exports |
| Formula evaluation and pivots | No direct slide equivalent; semantic layout compilation and diagnostics are presentation-specific capabilities |
| WASM | Added: real Rust/WASM validation, editing, layout and PPTX translation |
Current support
| Area | Implemented | Boundary |
|---|---|---|
| Creation | JSON, TypeScript presets, Markdown; stack/row/grid/canvas; themes, rich text, images, basic shapes, lists, tables, charts, code and 30 full-deck templates | No arbitrary HTML/CSS or automatic design generation |
| Editing | Atomic operations, stable IDs, expected revisions, insert/delete/move nodes and slides, notes, theme and assets | Snapshot history is O(document size); no collaborative CRDT |
| Layout | Deterministic flow, explicit frames, wrapping, font metrics, node-specific overflow/bounds diagnostics | Approximate fallback fonts; no complex text shaping, auto font fitting or complete rich-run measurement |
| PPTX text | Text/runs, font family/size, bold/italic/underline, basic paragraph alignment, bullets as text | Advanced paragraph spacing, full text inheritance, font embedding and text effects are not retained |
| PPTX shapes | Rect/roundRect/ellipse/line, direct fill/stroke, element rotation, simple group scale/translation | Custom geometry and complex group rotation/flips are approximate/omitted with warnings |
| Images | Embedded PNG/JPEG/GIF/WebP/static SVG, HTTP(S) URL sources, host-controlled offline embedding, alternative text, scene fit modes | Linked images depend on client/network policy; offline browser embedding needs CORS; contain/cover export uses intrinsic dimensions; arbitrary asymmetric crop metadata is warned/flattened |
| Charts | Six editable 2D category kinds, SVG preview, native DrawingML and embedded XLSX | Complete cached values required on import; unsupported 3D/combined/sparse/percent-stacked/logarithmic charts reported; formatting uses defaults |
| Templates | 60 categorized six-slide decks with native editable text, shapes, charts and embedded photography | Sample content is illustrative; fonts depend on host metrics and installation |
| Tables | Rectangular string cells with a header and simple grid preview/export | No merged cells, full table styles, per-cell formatting or complete multiline layout |
| Slides | Relationship ordering, hidden state, title, background, notes, placeholder geometry and decorative master/layout shapes | No full master/layout editing or arbitrary source package preservation |
| Presentation | Local playback, incremental steps, built-in browser/native entrances and optional Motion, notes, HTML keyboard/print flow, reveal.js markup, vertical sections | Native PPTX entrances, steps and delays are mapped; easing is approximate; standalone HTML/reveal retain steps only; transitions and arbitrary timelines are unsupported; vertical grouping is used by the reveal.js adapter, while built-in playback is linear |
| Agent | Five framework-neutral tools, generated schemas, compact inspection and revision conflicts | No provider SDK, model execution or MCP server bundled |
| Platforms | Native Rust, actual WASM in Node/browser, React SSR, ESM declarations, precompiled Worker WASM | workerd verified locally; Expo development builds with an optional Rust native add-on; no CommonJS build |
| Export | Canonical PPTX, HTML (self-contained after image embedding), SVG, JSON; browser print CSS | PDF generation belongs to the browser host; no PDF engine in WASM |
Charts, SmartArt, OLE, macros, media, encryption, legacy .ppt, arbitrary gradients/effects, arbitrary original animations and lossless arbitrary-PPTX rewriting are outside the current version. Detected unsupported graphics/media/timing generate warnings. Features outside the documented subset may still be ignored. WebP support varies in external PowerPoint applications.
Immutable scene-only React previews/players and embedded-image-only rendering are available without an authoring runtime. Hosts can lower native parsing/compilation resource limits; these do not replace host body admission or runtime CPU/memory isolation.
The built-in web and native editors cover Lipat’s documented authoring subset, including drag/touch geometry, host-owned Save and image processing callbacks, rich-text runs and portable animation settings. They do not add arbitrary PowerPoint timelines, transitions, master editing or unsupported content types. See editor and React Native.