Skip to content

[inkscape] path union/difference report success but emit d="M 0,0" and destroy both operands #406

Description

@SleepyOldOrbs

[inkscape] path union / difference / intersection report success but emit d="M 0,0"

Severity: high — silent data loss; the source shapes are consumed and replaced by nothing

Summary

The boolean path operations print a success message, consume both input objects, and
produce a path whose entire geometry is M 0,0. No error, no warning, and the operands
are gone.

Reproduce

cli-anything-inkscape document new --name B -w 800 -h 400 -o b.json
cli-anything-inkscape --project b.json -s shape add-circle --cx 250 --cy 200 --r 70 -n A -s "fill:#06d6a0"
cli-anything-inkscape --project b.json -s shape add-circle --cx 320 --cy 200 --r 70 -n B -s "fill:#118ab2"
cli-anything-inkscape --project b.json -s path union 0 1 -n merged
cli-anything-inkscape --project b.json -s export svg b.svg

Output:

Union created: merged
id: path1
name: merged
type: path

b.svg:

<path id="path1" style="fill:#06d6a0" d="M 0,0" />

Both circles have been removed from the object list. The result is an empty path.
Same for path difference; intersection, exclusion and convert are presumably in
the same state.

Impact

Worse than a plain failure, because it is destructive and silent. An agent following the
documented workflow — draw two shapes, combine them — ends up with fewer objects than it
started with, a success message in its context, and no signal that anything went wrong
until something renders blank much later.

Context

INKSCAPE.md describes the strategy as:

  1. Inkscape CLI — If available, use inkscape --actions for advanced operations
    (PDF export, path boolean ops, text-to-path conversion).

PDF export does correctly shell out to Inkscape — the harness reports
rendered_by: inkscape. Boolean ops do not appear to attempt it, and there is no
in-Python fallback either, hence M 0,0.

Inkscape 1.4.4 was on PATH throughout, so this is not a missing-dependency case.

Suggested fix

Route these through inkscape --actions as the SOP already describes
(select-by-id, path-union, export-filename, export-do), or — until that exists —
fail loudly. A clear "boolean operations require Inkscape and are not yet implemented"
error would be strictly better than the current behaviour, and would stop the operands
being destroyed.

Environment

OS Windows 11 Pro 10.0.26100
Inkscape 1.4.4 (dcaf3e7), on PATH
Python 3.14.6
Repo bc536c9 (2026-07-09)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions