predraw v0.3.0 /Changelog
On this page

#Changelog

#0.3.0

strictspec validation for scene and config documents, a working CLI on strictcli 0.36.0, and an enforced strictcli floor.

Context

Two breaking changes ship together. Scene and config documents are now validated by strictspec instead of jsonschema: every document must carry a top-level integer format_version, use elements must name their type, and a field may not be spelled both canonically and in snake_case. Separately, --dry-run became a framework-owned flag, so disabling it requires the explicit --no-dry-run spelling.

The release also repairs installs. predraw's CLI could not register against strictcli releases before 0.36.0; the manifest now declares that floor so a fresh install fails loudly at resolution time instead of producing a CLI that cannot start.

#Breaking

  • Breaking. --dry-run bool flag now requires explicit --no-dry-run to disable.
  • Breaking. Scene and config documents are now validated by strictspec with hard errors instead of jsonschema. Every document must carry a top-level integer format_version (stamp existing files once with scripts/stamp_format_version.py); use elements must carry an explicit type; and a field may not use both its canonical and snake_case alias spelling. Documents previously tolerated (missing version, ambiguous alias pairs, numerically unrepresentable values, unknown keys) are now rejected.

#Fixes

  • Fix pack command to use camelCase for stroke properties; watch excludes local-only files
  • CI fix. Resolved dependency resolution failure by removing local path override for strictcli.
  • Dependency installation no longer requires a machine-local checkout: uv.lock previously carried a local path for strictcli, breaking installs and CI outside the author's machine. It now resolves from PyPI (strictcli 0.24.0).
  • **The predraw CLI works again on strictcli 0.36.0.** build --dry-run is unchanged for callers -- the flag is now supplied by the framework rather than declared by predraw, which is what the new version requires.
  • **Installs now refuse an incompatible strictcli.** predraw declares strictcli>=0.36.0, so a fresh install can no longer resolve an older framework release that the CLI cannot register against.

#0.2.1

  • No user-facing changes.

#0.2.0

#Features

  • Place directions — place pipeline step now supports above, left, right in addition to below
  • Schemas moved into package — predraw validate now works after pip install
  • Stroke support (stroke, strokeWidth, strokeDasharray, strokeLinecap, strokeLinejoin, strokeOpacity)
  • Gradient fills — linear-gradient and radial-gradient as fill/stroke objects, rendered as SVG <defs>
  • predraw init — create a starter project with main.json + config.json
  • predraw watch — auto-rebuild on file changes (mtime polling, 0.3s debounce)
  • predraw --version flag
  • predraw build --dry-run — preview output plan without rendering

#0.1.2

#Features

  • npm dual-publish — installable via npm i -g predraw (Node shim delegates to Python)
  • predraw validate documented in README

#0.1.1

#Features

  • Bounding box calculation for paths — place pipeline step now uses real geometry instead of font-size heuristic
  • Local fonts/ directory support — project-local fonts searched before system fonts for reproducible rendering
  • Component property overrides — use elements can override fill (replaces) and opacity (multiplies) on referenced components

#0.1.0

#Features

  • Component system: imports + use with property overrides (fill, opacity cascade)
  • text-to-paths pipeline step via fonttools (converts text to SVG path outlines)
  • Output formats: SVG, PNG (via cairosvg), WebP (via Pillow)
  • predraw unpack — convert packed file back to directory with components
  • JSON Schema for scene and config formats
  • predraw validate — validate scene/config files against the JSON Schema
  • Declarative JSON format for describing visual assets (rect, path, text, group, background)
  • $style tokens with light/dark mode variants, resolved at render time
  • Per-character text styling via charStyles
  • Pipeline steps: center, place, group, text-to-paths
  • Config-driven outputs with per-output mode selection (config.json)
  • predraw build — render all outputs from a project directory or single file
  • predraw pack — convert directory project to single portable JSON file
Search