# Changelog

## 1.5.0 - 2026-09-26

- Audited the manual and guides against the current node, path, and pic APIs;
  added a cross-module debug-overlay guide and a rendered seven-page
  `show anchors` / `show keys` feature tour.
- Enabled `show anchors` and `show keys` on all eight native fluid nodes;
  their debug cards now resolve correctly when a node name is reused.
- Covered every straight and curved ramp boundary with percentage anchors,
  corrected the straight-ramp bounding-box centre for a tall wall, and added
  a twelve-page rendered `show anchors` guide with geometry regressions.
- Increased the curved ramp's default horizontal floor by 50%, from 2.5 cm
  to 3.75 cm, while retaining the `curved ramp floor length` override.
- Aligned wedge `right-mid`, `slope-mid`, and `slope-right-mid` with their
  corresponding percentage contact or boundary anchors in all right-angle
  modes, including pulley-edge wedges.
- Made `centroid` and `mid` follow the filled four-point pulley-edge body.
  Added coordinate regressions and a ten-page rendered `show anchors` guide.

## 1.4.0 - 2026-09-25

- Simplified platform, ground, ceiling, and freestanding-wall anchors:
  `surface-0..100` now covers each usable contact face; the remaining
  boundaries have consistently directed percentage families. Removed their
  redundant corner and edge-midpoint aliases, updated the in-picture anchor
  tables and examples, and added a thirteen-page `show anchors` coverage gallery.
- Documented every platform, ground, ceiling, and wall edge family with
  copy-ready `show anchors` examples and a rendered visual reference.
- Rejected inward/downward transitions on upward platform walls, whose outline
  could cross the floor; verified clean left and right upward corners.
- Made `show anchors` and `show keys` work on unnamed nodes, replaced piled-up
  anchor numbers with one marker per location and a complete anchor table, and
  positioned the table below the displayed geometry.
- Added a separate fluid-mechanics module with eight native TikZ nodes and fourteen teaching pics, named coordinates, scoped geometry keys, collision-safe aliases, configurable labels, native patterned liquid fills, and geometry validation.
- Removed forced element label sizes; preserved per-node fonts, made dimension tips and padding font-relative, and separated angular annotations from radius labels.
- Corrected element dimension-label capture so per-node aliases such as
  `rectangular strip` retain `b` and `dx`, including arbitrary LaTeX labels.
- Drew projected rear circle edges with the configurable dashed
  `every solid hidden edge` style; corrected cone-slice lower projection and
  semantic slice centre; rejected sphere and cylinder slices that cross their
  body boundary.
- Added fluid reference scenes, font checks, API documentation, and the module to the generated single-file Overleaf package.

- Extended `tikzphysics.elements` with `spherical shell`, `hollow sphere`,
  `rectangular element`, `rectangular strip`, and `rectangular sheet` nodes.
- Added named sphere-shell, sphere-slice, hollow-sphere, cylinder-shell,
  cylinder-slice, cone-slice, and sheet-element teaching pics with formula
  labels, component nodes, structural coordinates, and projection controls.
- Added validation, geometry regressions, debug/reference cards, a rendered
  solid-elements gallery, and detailed shell-versus-slice documentation.
- Added the separate `tikzphysics.elements` module with `polar element`,
  `differential sector`, `differential ring`, and `unwrapped ring` nodes plus
  the `differential ring diagram` pic.
- Added configurable circular-element radii, angular extent, plain-LaTeX
  `d\!r` dimension labels, named and numeric boundary anchors, resolved
  geometry values, debug cards, regression coverage, and a rendered example.
- Mirrored the default hatch on `platform-right` so the pattern crosses the
  tapered pulley edge and reads as an inward, solid platform corner.
- Extended `pulley edge` to wedges with a 0.5 cm top inset and 1 cm top
  drop while preserving the original tip as `pulley-center`.
- Added `wedge top inset` and `wedge top drop`, mirrored support for
  bottom-left right-angle wedges, and wall-root plus transition anchors.
- Updated the complete wedge mechanics example to use a taller grounded wedge,
  a shorter hanging string, and the full default 1 cm hanging block.

## 1.3.0 - 2026-09-13

- Added continuous tapered pulley edges to `platform-left`, `platform-right`,
  and `platform`/`platform-both`. The `pulley edge`, `left pulley edge`,
  `right pulley edge`, and `pulley edges` presets use a 0.5 cm inset and drop.
- Added shared and side-specific `wall inset` and `wall drop` keys while
  preserving the original geometry at their zero defaults.
- Added pulley-centre, wall-root, transition-mid, and numeric transition
  anchors, including left/right variants on two-wall platforms.
- Added coordinate regression coverage and a complete horizontal/inclined
  visual example for the new platform geometry.
- Added a reproducible single-file Overleaf bundle generator and isolated
  compile check so direct upload includes every current runtime module.
- Reduced the default pulley axle-dot radius from 2 pt to 1.5 pt for a cleaner
  centre mark at the default 1 cm pulley diameter.

## 1.2.0 - 2026-09-05

- Added simple `every block`, `every spring`, and per-feature default hooks,
  with shared `every physics object` and `every physics connection` hooks.
- Added `rope` and native `to[over pulley=P]` connections. The compatibility
  command shares their implementation and respects surrounding route settings.
- Allowed zero-length spring leads; retained positive coil-size validation.
- Added left-to-right wedge contact families and per-node tangent/normal
  guides for all three wedge modes, retaining existing edge anchors.
- Added particle, disk and ring nodes; force, velocity, acceleration, torque
  and rod paths; named pin/roller support and pendulum pics.
- Reworked debug capture per named node: local false overrides and styling
  work without duplicate inherited emissions. Coincident anchors share labels.
- Added `show anchors`, `show keys`, explicit anchor/family/sample selection,
  movable legends, and `\physicshelp{feature}` / `\physicshelp{index}` cards.
- Generated complete reference cards, Markdown reference, and manual appendix
  from the feature declarations using `scripts/generate_reference.py`.
- Reorganised the README and manual around a first diagram, learning routes,
  defaults, complete systems, debugging, and a detailed feature reference.
- Retained legacy numeric percentage shortcuts and rectangular automatic
  borders on irregular shapes; documented explicit contact-anchor usage.
- Fixed prism centroid and face-midpoint anchors, exposed by checking every
  advertised anchor through the debug explorer.
- Added regression coverage and complete examples for the new APIs.


- Changed `spring` from a node into a path decoration used as
  `\draw[spring] (A) -- (B);`; the endpoints now determine its length and
  direction directly.
- Added concise public aliases for the remaining shape-specific controls,
  including `wall angle`, `strip width`, `pulley axle radius`, and
  `string route`. The `physics ...` forms remain collision-safe aliases.
- Added `platform-left-up` and `platform-right-up` presets, each composing the
  corresponding one-wall platform with `wall angle=90`.
- Changed the default wedge material pattern from diagonal hatching to dots.
- Reduced the default bent-platform `strip width` from `0.3cm` to `0.25cm`.
- Placed wedge-mounted pulley centres exactly at the wedge `top` anchor; the
  examples retain the default `1cm` pulley diameter and match the block height
  to retain surface-parallel tangency from the block's `east` anchor.
- Expanded percentage-anchor documentation with beginner syntax, family
  directions, shorthand rules, multi-part path behaviour, annotated diagrams,
  and a complete copy-paste example.
- Increased the curved ramp's default horizontal floor length from `2cm` to
  `2.5cm`.
- Documented native TikZ `|-` and `-|` coordinate projection for exact
  horizontal wall-to-block connections, with ramp and upward-platform examples.
- Corrected the complete pulley-system gallery to use the default `1cm`
  pulley size at natural scale. The bent-platform pulley centre now sits
  directly on `wall-outer-100`, with a matching `1cm` block height preserving
  exact surface-parallel tangency.
- Added per-node wedge geometry values through
  `\geometryvalue{W}{property}` and the collision-safe
  `\tikzphysicsgeometryvalue`. Named wedges expose their three interior
  angles, local edge directions, contact-surface rotations (including both
  faces of a top-right-angle wedge), resolved width and height, and
  right-angle vertex for reuse in rotations, calculations, and labels.

## 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.
