# Changelog

## 1.1.0 - 2026-08-15

- Added the dedicated `tikzphysics.ramps` library with `ramp` and
  `curved-ramp` node shapes. Each ramp is a single closed geometry with one
  continuous contact line; the straight floor-to-incline corner remains sharp.
- Added right- and left-facing ramp variants, angle- or rise-driven straight
  geometry, circular radius/sweep/back-extension controls, and detailed named
  structural anchors.
- Added `surface-0..100` plus `.0..100` shorthand on both ramps, with
  `tangent-before-T`, `tangent-after-T`, and `normal-T` orientation helpers at
  every integer sample.
- Added full straight- and curved-ramp systems, a variant gallery, regression
  coverage, quick-reference entries, and a detailed manual section explaining
  the uncommon geometry and block-placement method.
- Added `\physicsrampangle` for a labeled acute-angle mark at the sharp
  straight-ramp foot.
- Extended `curved-ramp` with a configurable horizontal floor before the arc.
  The full `surface-*` family follows floor plus curve, while `curve-*` and
  curve-specific tangent/normal helpers address the circular portion alone.
- Added `spring` / `physicsspring` as a named mechanics node with exact
  attachment and coil-boundary anchors. Its total length uses native
  `minimum width`; the standard coil names `pre length`, `post length`,
  `amplitude`, `segment length`, and `aspect` work directly on the node, with
  collision-safe aliases also available. Amplitude and segment length both
  default to `4.5pt`.
- Restyled the user manual with Fourier typography and compact Dracula-themed
  `minted` listings, and documented the shell-escape requirement for building
  the manual (not for using the package).

- Extended `tikzphysics.optics` with symmetric `convex-lens` and
  `concave-lens` shapes, a rectangular `slab`, and an isosceles `prism`.
- Corrected the original curved element's classification: it is now exposed as
  `concave-mirror`, with a reflected `convex-mirror` variant and
  `surface-0..100` anchors.
- Added named and numeric optical-surface anchors, concise unit-aware keys,
  complete component and ray-composition examples, and debug registrations for
  every new optical shape.
- Added `.0` through `.100` primary-surface shorthand anchors and complete
  converging/diverging ray diagrams for both lens and mirror types.
- Corrected the lens ray examples so every non-axial ray refracts at both
  interfaces. The fixed $n=1.50$ panels use Snell-law-derived exit and focal
  coordinates; spherical-mirror panels are identified as paraxial diagrams.
- Kept slabs and prisms as transparent outlines, and placed the convex
  mirror's reflecting arc on its left boundary.
- Added concise public styles: `platform`, `platform-left`, `platform-right`,
  `platform-both`, `wedge`, `ground`, `ceiling`, `wall-left`, `wall-right`,
  `block`, `pulley`, `concave-mirror`, `convex-mirror`, `convex-lens`,
  `concave-lens`, `slab`, and `prism`.
- Kept the `physics...` style names as collision-safe alternatives for
  documents that already define generic TikZ styles.
- Added complete copy-paste documents for short-name platform/pulley and
  inclined-plane pulley compositions.
- Added a complete wedge document covering native and convenience width,
  angle- and height-driven geometry, and the `br`, `bl`, and `top` modes.
- Added concise wedge keys: `wedge width`, `wedge height`, `wedge angle`, and
  `wedge right angle at`; the `physics wedge ...` forms remain collision-safe
  aliases.

## 1.0.0 - 2026-08-12

First public release.

### Surface diagrams

- Added `physicsplatform-left`, `physicsplatform-right`, and `physicsplatform-both`.
- Platform floors and walls render as one closed patterned polygon, with exact
  sharp miters on the inner edge and no connection seam.
- Added independent `physics left wall angle` and `physics right wall angle` controls.
- Added `physicswedge` with bottom-left, bottom-right, and top right-angle modes.
- Added `physicsground`, `physicsceiling`, `physicswall-left`, and `physicswall-right`.
- Added named floor, wall, corner, wedge, and contact-surface anchors.

### Mechanics and optics

- Added configurable `physicsblock` and `physicspulley` styles.
- Added `\physicsstringoverpulley`, which joins its endpoint coordinates to a
  pulley through exact tangent segments and a circular contact arc.
- Added a default `surface-right` string route and named `over`, `under`, and
  `shortest` presets, plus complete flat-plane, inclined-plane, bent-platform,
  and hanging-mass examples. Surface examples place the pulley so the
  block-side string is exactly parallel to its supporting surface and passes
  over the upper pulley rim; pulley supports are kept compact.
- Added `physicslens`, with front/back surface anchors and parametric arc anchors.

### Shared facilities

- Bare size values are interpreted as centimetres; explicit TeX units are
  preserved.
- Invalid non-positive lengths and degenerate wedge/lens angles produce package
  errors close to the originating key.
- Straight edges and lens arcs expose integer parametric anchors from 0 to 100.
- Added `physics debug/anchors`, `physics debug/keys`, and `physics debug/all` overlays.
- Debug key panels prefer native TikZ sizing names while package-specific keys
  and all unit-aware convenience aliases remain available.
- Added an `l3build` regression suite and reproducible CTAN packaging.

### Public API

- Package-specific configuration keys use a consistent `physics ...` prefix;
  native TikZ sizing keys are also supported directly.
- The project intentionally makes no compatibility promise for pre-release
  prototypes distributed before version 1.0.0.
