# Changelog ## 1.7.0 - 2026-09-30 - Standardize physical strokes on inherited native TikZ line widths and arrows on `>=latex`; remove older fixed widths and font-sized arrow overrides. - Fix polar centroid overflow for ordinary large radii and stabilize narrow sectors. Centre native element text, correct the sphere disk hidden half and cylindrical shell height marker, and add projected rim/axial percentage coordinates, detailed element documentation and visual/regression coverage. - Add thermal physics and heat transfer: eight native monochrome nodes, percentage anchors, latex heat-flow arrows, apparatus composition, independent loading, reference cards, extensive documentation and Overleaf integration. - Fix circular heat-engine connection borders and reject impossible PV/Carnot states before overflowing powers. Add shared PV frames, optional axes, endpoint and cycle-state projections, heat/work pic percentage coordinates, a heat-pump pic alias, and a composition gallery. - Add the thermodynamics library: thirteen native nodes, two energy-flow pics, equation-based PV processes and Carnot cycles, percentage anchors, documentation and monochrome examples; include it in the single-file Overleaf runtime. - Added 23 native components across mechanics, fluids, projected solids, tracks, and a new waves module. Added percentage boundaries, contact guides, indexed standing-wave and pipe-mode anchors, explicit input validation, monochrome galleries, and full reference and single-file bundle support. - Added plane mirrors, plano-convex/plano-concave lenses, and positive/negative meniscus presets with full percentage families, configurable face radii, minimum material thickness, reference cards, and monochrome visual galleries. - Completed optics percentage families with lens/mirror end caps, explicit primary `surface-0..100` anchors on every optical shape, and prism `entry-0..100` / `exit-0..100` aliases. Existing directions and numeric shorthand remain compatible; generated reference cards list the additions. ## 1.6.0 - 2026-09-27 - Added integer percentage anchor families to all native fluid nodes, block boundaries, and pulley, particle, disk, and ring rims. Private mechanics shapes retain native sizing and tangent routing without modifying TikZ's standard rectangle or circle shapes. - Corrected cylinder surface endpoints and pressure-element face centres; made the U-tube primary surface select its left arm. - Drew debug overlays above fills, separated crowded marker labels with leader lines, clustered coincident formula results by distance, and placed reference cards above geometry and markers. - Added a complete fluid/mechanics anchor gallery, direction tables, and numerical and transformed-coordinate regressions. - Added the node form of `spring` alongside its existing two-point path form, with shared coil settings, exact attachment and coil-lead anchors, `axis-0..100`, and native `show anchors` / `show keys` overlays. - Fixed spring lead lengths changing when subsequent coil-size keys reused an internal dimension register. - Added dual-form spring documentation, a rendered gallery, regression tests, and the implementation in the generated single-file Overleaf bundle. ## 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.