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