diff --git a/AGENTS.md b/AGENTS.md index 0e706a7..6496924 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -141,8 +141,8 @@ to `main`. ## 6. Running and looking at the app -- `cargo run --release -p deckcraft -- --sample --control 7979` (sample deck + control channel). -- Drive it: JSON lines on `127.0.0.1:7979`, e.g. +- `cargo run --release -p deckcraft -- --sample --control 7990` (sample deck + control channel). +- Drive it: JSON lines on `127.0.0.1:7990`, e.g. `{"id":1,"method":"engine.execute","params":{"command":"shape.insert","params":{"preset":"star5","rect":[100,100,200,200]}}}` then `{"id":2,"method":"ui.screenshot","params":{"path":"/tmp/shot.png"}}`. Methods: `crates/ui-egui/src/control.rs`, docs: `docs/control-protocol.md`. @@ -150,7 +150,7 @@ to `main`. in `plan/powerpoint/01-observed-ui.md`. - Headless: `deckcraft-cli render --sample --all --scale 1 out/`, `deckcraft-cli run --sample --cmd 'slide.new={"title":"Hi"}' --export out.png`. -- MCP: `deckcraft-cli mcp` (headless) or `deckcraft-cli mcp --connect 7979` (drive the app). +- MCP: `deckcraft-cli mcp` (headless) or `deckcraft-cli mcp --connect 7990` (drive the app). See `docs/mcp.md`. - Shell gotcha on the dev machine: `mv`/`cp` are aliased interactive; use `/bin/mv -f`, `/bin/cp -f`. - Parallel agents: separate `CARGO_TARGET_DIR` per agent; edit only the crates you own. diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index 4567d53..3318f2e 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -20,6 +20,7 @@ deck and UI icons are original work of the DeckCraft contributors (drawn or gene | `assets/app-icon/deckcraft-1024.png`, `assets/app-icon/hicolor/*/apps/ai.storyteller.deckcraft.png` | DeckCraft contributors | rendered by DeckCraft from `assets/app-icon/icon-source.deckcraft` (shapes only) | MIT OR Apache-2.0 | Placeholder app icon (presentation board) until the mascot icon is drawn | | `assets/app-icon/deckcraft.icns`, `assets/app-icon/deckcraft.ico` | DeckCraft contributors | generated from the PNGs above by `packaging/icons.sh` (sips/iconutil, `cargo xtask ico`) | MIT OR Apache-2.0 | macOS and Windows app icons | | `assets/app-icon/icon-source.deckcraft` | DeckCraft contributors | made with `deckcraft-cli run` (see git history) | MIT OR Apache-2.0 | Source of the placeholder icon | +| `docs/images/editor.png`, `docs/images/shape-format.png`, `docs/images/format-pane.png`, `docs/images/slide-sorter.png`, `docs/images/dark-mode.png`, `docs/images/sample-deck.png` | DeckCraft contributors | Screenshots of DeckCraft and slides rendered by `deckcraft-cli` from the built-in sample deck (original content; Inter font, OFL-1.1) | MIT OR Apache-2.0 | README screenshots | | `crates/media/tests/fixtures/tone*` (`tone.mp3`, `.m4a`, `.aac`, `.ogg`, `.opus`, `.flac`, `.wma`, `tone-alac.m4a`) | DeckCraft contributors | synthesised 0.5 s 440 Hz sine, encoded by `crates/media/tests/fixtures/make.sh` (ffmpeg as the encoder only) | CC0-1.0 | Audio decoding tests | | `crates/media/tests/fixtures/clip-*` (`clip-h264.mp4`, `clip-h264.mov`, `clip-hevc.mp4`, `clip-vp9.webm`, `clip-av1.mkv`) | DeckCraft contributors | 6 frames of a colour gradient generated by `make.sh` (python3), encoded by ffmpeg (x264 / x265 / libvpx / SVT-AV1 as encoders only) | CC0-1.0 | Video decoding tests | | `crates/media/tests/fixtures/make.sh` | DeckCraft contributors | this repository | MIT OR Apache-2.0 | Regenerates the media fixtures | diff --git a/CLAUDE.md b/CLAUDE.md index 2dcfdbe..d73c828 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -10,7 +10,7 @@ win over anything here. ## Habits - Every user-visible action is a command with tests (`crates/engine/src/cmd/*`). -- Look at UI changes: `deckcraft --sample --control 7979` + `ui.screenshot`, or +- Look at UI changes: `deckcraft --sample --control 7990` + `ui.screenshot`, or `deckcraft-cli render`. - Commit after each landed arc (`M.: what`) and push to `origin main`. - Keep `ROADMAP.md` and `plan/STATUS.md` current. diff --git a/README.md b/README.md index a73c69d..c1ae56e 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,10 @@ > filmmakers, illustrators, designers, animators, hobbyists, and people who picked up a pencil > last week. If you make things, you're one of us. **[Come say hi on Discord](https://discord.gg/artcraft).** +

+ DeckCraft editing a slide: ribbon, slide thumbnails with sections, a process diagram on the canvas, notes and status bar +

+

What works · Getting started · @@ -53,19 +57,42 @@ ## What works today -DeckCraft is in early development. Today: +DeckCraft is in early development, heading for its first alpha (see the [roadmap](ROADMAP.md)). +Today it can: -- **Presentation model** with slide masters, eleven layouts, placeholders that inherit position and - formatting, themes (colour, font and effect schemes), sections, notes, comments, transitions and - animations. -- **150+ preset shapes** (rectangles, basic shapes, block arrows, equation shapes, flowchart, stars - and banners, callouts, action buttons) with adjust handles, re-derived from scratch. -- **Text engine**: shaping with font fallback, line breaking, bullets and numbering, indents and - spacing, alignment, anchoring, columns, shrink-on-overflow and resize-to-fit. -- **Renderer** (vello_cpu): gradients, pictures with crop and corrections, outlines with dashes and - arrowheads, shadows, glow, soft edges, reflections, tables with styles, charts. -- **Editing engine**: 200+ commands, undo/redo, clipboard, grouping, align and distribute, smart - guides, Format Painter, in-place text editing — all scriptable. +- **Make decks**: slide masters and eleven layouts with placeholders that inherit position and + formatting, eight original themes with colour and font schemes, sections, notes, comments, + headers and footers, custom slide sizes. +- **Draw**: 150+ preset shapes with adjust handles, connectors that stay glued to shapes, freeform, + curve and scribble tools, merge shapes (union, combine, fragment, intersect, subtract), gradient, + picture and pattern fills, outlines with dashes and arrowheads, shadows, glow, soft edges and + reflections. +- **Write**: in-place text editing with full font and paragraph formatting, bullets and numbering, + columns, autofit, vertical text, fields and hyperlinks. +- **Add content**: pictures with crop and corrections, tables with styles, charts, SmartArt basics, + audio and video (MP3, AAC, FLAC, ALAC, Ogg, Opus, WAV, AIFF; H.264, HEVC, VP9, AV1). +- **Present**: transitions (including Morph), entrance/emphasis/exit and motion-path animations, + by-paragraph builds, full-screen slide show, presenter view, pen, rehearse timings, media playback. +- **Exchange files**: open and save PowerPoint `.pptx`, export PDF (slides, notes pages, handouts + with selectable text), PNG/JPEG and outlines. Unsaved work is kept by AutoRecover. +- **Automate**: 200+ commands with undo, all scriptable from the CLI, a JSON control channel and an + MCP server for AI agents. + + + + + + + + + + +
A selected shape with the Shape Format tab
Shape Format contextual tab and selection handles
The Format Shape pane editing a gradient fill
Format Shape pane: gradient type, direction and stops
Slide Sorter view with transitions under each slide
Slide Sorter with each slide's transition
DeckCraft in dark mode showing a chart slide
Dark mode, with a native chart
+ +

+ All eight slides of the Northern Lights sample deck
+ The built-in sample deck, rendered by deckcraft-cli render --sample --all +

## Getting started @@ -88,12 +115,15 @@ same verbs: deckcraft-cli commands format. # list commands deckcraft-cli run --sample --cmd 'slide.new={"layout":"titleOnly","title":"Hello"}' --save hello.deckcraft deckcraft-cli mcp # MCP server over stdio (headless) -deckcraft-cli mcp --connect 7979 # drive the running app (deckcraft --control 7979) +deckcraft-cli mcp --connect 7990 # drive the running app (deckcraft --control 7990) ``` ## Roadmap -See [ROADMAP.md](ROADMAP.md) for milestones, parity estimates and what's next. +DeckCraft covers about **79% of PowerPoint's features by breadth** (93% of the core ones) and is +roughly **80% of the way to a first alpha**. See [ROADMAP.md](ROADMAP.md) for the alpha checklist, +parity estimates and what's next, and [docs/parity.md](docs/parity.md) for the feature-by-feature +scorecard. ## The Crafting Apps diff --git a/docs/images/dark-mode.png b/docs/images/dark-mode.png new file mode 100644 index 0000000..08e9d36 Binary files /dev/null and b/docs/images/dark-mode.png differ diff --git a/docs/images/editor.png b/docs/images/editor.png new file mode 100644 index 0000000..a2fc335 Binary files /dev/null and b/docs/images/editor.png differ diff --git a/docs/images/format-pane.png b/docs/images/format-pane.png new file mode 100644 index 0000000..736f07d Binary files /dev/null and b/docs/images/format-pane.png differ diff --git a/docs/images/sample-deck.png b/docs/images/sample-deck.png new file mode 100644 index 0000000..720214b Binary files /dev/null and b/docs/images/sample-deck.png differ diff --git a/docs/images/shape-format.png b/docs/images/shape-format.png new file mode 100644 index 0000000..f1c1a3f Binary files /dev/null and b/docs/images/shape-format.png differ diff --git a/docs/images/slide-sorter.png b/docs/images/slide-sorter.png new file mode 100644 index 0000000..db8e486 Binary files /dev/null and b/docs/images/slide-sorter.png differ