Skip to content

Releases: gmrdad82/manfred

Release list

Manfred 0.19.0

Choose a tag to compare

@gmrdad82 gmrdad82 released this 08 Oct 06:22
v0.19.0
6d4d186

The first public release of Manfred, a lighter Blender built on pfx: scenes as TOML recipes, GLB headless, a live window, path-traced stills, and all of it plain data. Earlier versions were developed privately and their tags are not in this repository, so apps pin v0.19.0 or later. These notes cover what changed since 0.18.0, the last private release.

Install the manfred tool with cargo install --locked --git https://github.com/gmrdad82/manfred --tag v0.19.0 manfred, and link the library from an app's build binary by the same tag, manfred = { git = "https://github.com/gmrdad82/manfred", tag = "v0.19.0" }. Building needs Rust 1.97 or newer, pkg-config and the Wayland client library; running needs a Vulkan GPU, and the window needs Wayland. The README covers the rest.

What's new

  • Open source under MIT. LICENSE is the MIT text. NOTICE names where every picture, mark, font and test file comes from and what covers it. TRADEMARKS.md keeps the Manfred and PITO names and logos reserved. The repository also has a code of conduct and a security policy that asks for private reports.
  • The window films itself. manfred gui [<recipe>|<folder>] --clip <dir> --tape <file> plays a tape of clicks, drags, keys, typing and waits on the offscreen window, frame by frame, into an x264 master, a poster PNG and a JSON manifest, with --size WxH, --fps 30|60|120, --poster first|last|<seconds> and --start. Between frames it waits for every build, pick and render the window started, so the same tape gives the same master byte for byte. It plays on a copy of the folder, so a tape's edits never reach the original. It needs ffmpeg on the PATH. The tour at the top of the README is showcase/tour.tape (docs/editing.md, "Clips of the window").
  • Command-line errors follow clap's form. A line manfred can't parse gets clap's short error on stderr, with one Usage: line, the --help hint and exit code 2, coloured in a terminal and plain otherwise. A bare manfred prints that error rather than the help. The whole help prints for --help, -h and help, and manfred help <command> prints one command's. Values and flags that only work together are checked before anything starts. A recipe, camera or file refused after that is one line on stderr, manfred <command>: …, with exit code 1.
  • Every dependency comes from a public source over https. The pfx crates, the editor crates pfx-editor-style and pfx-editor-shell included, come from pfx's v0.25.0 tag, and pfx-scene (the scene format) and pfx-report (the reporting hook) from their v0.1.0 tags. The lock holds one copy of each, and a clean build fetches nothing over ssh.
  • Scenes are written through pfx-scene. [output] scene writes scene format 1 through pfx-scene's types, and the window opens .scene.toml files through the same crate. The files Manfred writes are unchanged.
  • Crash reports and job progress go through pfx-report. It is a small hook crate whose every call does nothing. A build from this repository sends no crash reports, job progress or heartbeat, and manfred --report-test says so and exits 1. A build that wants them patches in a reporter with the same API. Manfred's library crates never link it.
  • A public gate. bin/gate --public runs ShellCheck, cargo fmt --check, clippy with -D warnings and every test that needs no GPU, a licence check included: every dependency must be under an MIT-compatible licence. CI runs it on Rust 1.97.1. Tests that need a GPU are ignored by default; run them with cargo test -- --ignored.

Fixes

  • A recipe opened from a folder's picker saves its edits.

Notes for callers

  • Gone: the root package's jobs and report features. Link the library by its tag; default-features = false is no longer needed.
  • Behaviour change: a bare manfred, and a line it can't parse, exit 2 with clap's error instead of printing the help or a manfred <command>: … line. A refusal after the parse keeps its one-line shape and exit 1.
  • Behaviour change: a host Command in manfred::cli::Host gets the rest of the line as given and parses its own arguments. Its usage is that command's line in manfred --help, and the host's own usage is text the help ends with (docs/apps.md, "Commands").
  • GLBs: a GLB's generator reads manfred 0.19.0, so a build differs from 0.18.0's in that string alone. The scene, material and proxies files are byte for byte the same.