History/change log

  • 0.6 (2026-04-01)

    • Support for conic arcs (parabolas, ellipses, hyperbolas) and BSplines

    • Internally rewrote mechanism for tracking constraint calls.

  • 0.5 (2026-02-24)

    Breaking changes:

    • Replaced add_arc_from_center / add_arc_from_start_end with a single unified add_arc method.

    • Changed add_circle to take radius_id: Param instead of radius: float, for consistency with other entity constructors.

    • Changed add_param() default to fixed=False for consistency.

    New constraints:

    • difference, proportional, p2p_angle

    • point_on_perp_bisector, point_on_arc, point_on_ellipse

    • circle_diameter, arc_radius, arc_diameter

    • equal_radius_cc, equal_radius_ca, equal_radius_aa

    • tangent_line_ellipse, tangent_arc_arc, tangent_circle_arc, tangent_circumf

    • p2c_distance, c2c_distance, c2l_distance

    • p2a_distance, a2l_distance, c2a_distance, a2a_distance

    • arc_length

    • internal_alignment_point2ellipse

    • arc_angle / set_arc_angle for constraining arc sweep angles

    • *ViaPoint family: angle_via_point, curve_value, snells_law, etc.

    • coordinate_x, coordinate_y

    • clear_by_tag, constraint_error

    New features:

    • Debugging graphics: Sketch.to_image() renders the sketch to a PIL/Pillow image for visual inspection.

    • Entity lookup API: ConstraintInfo.get_entities() to inspect which geometric entities a constraint references.

    • Rich constraint info in diagnosis results (diagnose() now returns ConstraintInfo objects for conflicting/redundant constraints).

    • add_point_from_params() to build points from existing param IDs.

    • get_point_param_ids() to retrieve the underlying param IDs of a point.

    • arc_size property on ArcInfo (end_angle - start_angle).

    • Improved CurveId type checking.

    • Script to regenerate type stubs (update_stubs.py).

    Documentation:

    • Documented arc direction conventions in docstrings.

    • Added tangent arc-line example.

    • Added graphics/visualization docs.

  • 0.4 (2026-02-13)

    • Breaking: removed get_arc_center(), get_arc_radius(), get_arc_start_angle(), and get_arc_end_angle() from the public Sketch API—use get_arc() instead.

    • Replaced add_point + fix_point pairs with add_fixed_point throughout docs, examples, and tests.

    • Added get_circle() returning a CircleInfo dataclass.

    • Added get_line() returning a LineInfo dataclass.

    • Added get_ellipse() returning an EllipseInfo dataclass.

    • Added PointInfo type alias for tuple[float, float].

    • Added 100% Python code coverage enforcement.

    • Added pytest/ty checks to release.sh.

  • 0.3 (2026-02-11)

    • Breaking: renamed add_arc to add_arc_from_center; add_arc_from_start_end radius parameter now takes a ParamId instead of a float; ArcInfo changed from NamedTuple to frozen dataclass.

    • Added typed IDs (PointId, LineId, etc. via NewType) and convenience methods to the Sketch API.

    • Added add_arc_from_start_end and tangent_line_arc constraint.

    • Added get_arc property getter returning full ArcInfo.

    • Added constraint-system diagnosis: degrees of freedom, conflicting and redundant constraint detection.

    • Added add_fixed_param convenience method.

    • Added type stubs (.pyi) for the _planegcs C extension module with automated freshness checking.

  • 0.2 (2026-02-11)

    • Added add_fixed_point convenience method

  • 0.1.2 (2026-02-11)

    • more automated tests, reformatting etc.

    • Python 3.14 wheels added

  • 0.1.1 (2026-02-09)

    • build some wheels

  • 0.1 (2026-02-09)

    • initial release