<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>RidgeForge releases</title>
  <subtitle>C++17 triangle-mesh repair, decimation and ridge extraction</subtitle>
  <id>https://ridgeforge.dev/feed.xml</id>
  <link rel="self" href="https://ridgeforge.dev/feed.xml"/>
  <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
  <updated>2026-09-29T10:00:00Z</updated>
  <author><name>the RidgeForge authors</name><email>dev@ridgeforge.dev</email></author>
  <entry>
    <title>RidgeForge 0.9.4</title>
    <id>tag:ridgeforge.dev,2026:release/0.9.4</id>
    <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
    <updated>2026-09-29T10:00:00Z</updated>
    <summary>Attribute carry-through: normals and one UV set now survive decimation, interpolated by collapse weights. DecimateReport::target_reached added; rfmesh check gains --self-intersect. Stats::of now takes a MeshView.</summary>
  </entry>
  <entry>
    <title>RidgeForge 0.9.3</title>
    <id>tag:ridgeforge.dev,2026:release/0.9.3</id>
    <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
    <updated>2026-08-12T10:00:00Z</updated>
    <summary>Collapse heap packed to 28 bytes: decimation 12% faster above a million triangles and 22% less peak memory. Big-endian binary PLY reader fixed. Stats::oriented added.</summary>
  </entry>
  <entry>
    <title>RidgeForge 0.9.2</title>
    <id>tag:ridgeforge.dev,2026:release/0.9.2</id>
    <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
    <updated>2026-06-20T10:00:00Z</updated>
    <summary>SelfIntersection::resolve added, experimental from day one (cannot separate nested shells). ResolveOptions::move_limit and FindOptions::max_pairs added.</summary>
  </entry>
  <entry>
    <title>RidgeForge 0.9.1</title>
    <id>tag:ridgeforge.dev,2026:release/0.9.1</id>
    <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
    <updated>2026-05-05T10:00:00Z</updated>
    <summary>fill_holes falls back to a centroid fan on non-planar loops. Progress stage names documented as comparable literals. MSVC 19.36 build fix.</summary>
  </entry>
  <entry>
    <title>RidgeForge 0.9.0</title>
    <id>tag:ridgeforge.dev,2026:release/0.9.0</id>
    <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
    <updated>2026-03-18T10:00:00Z</updated>
    <summary>Remesher added (isotropic, optional projection). SelfIntersection::find promoted to stable and made exact - its tolerance argument is gone (breaking). Collapse guards reordered (output changes).</summary>
  </entry>
  <entry>
    <title>RidgeForge 0.8.0</title>
    <id>tag:ridgeforge.dev,2025:release/0.8.0</id>
    <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
    <updated>2025-11-27T10:00:00Z</updated>
    <summary>RidgeExtractor added: ordered ridge/valley polylines split at junctions. RidgeOptions::ridge_threshold renamed to min_angle_deg and switched from radians to degrees (breaking).</summary>
  </entry>
  <entry>
    <title>RidgeForge 0.7.0</title>
    <id>tag:ridgeforge.dev,2025:release/0.7.0</id>
    <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
    <updated>2025-07-15T10:00:00Z</updated>
    <summary>Decimator rewritten around a lazy heap: 2.3x faster at a million triangles. max_aspect_ratio sliver guard added (output changes). Ties broken by vertex index, so runs are reproducible.</summary>
  </entry>
  <entry>
    <title>RidgeForge 0.6.0</title>
    <id>tag:ridgeforge.dev,2025:release/0.6.0</id>
    <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
    <updated>2025-03-04T10:00:00Z</updated>
    <summary>Repair namespace added: weld_vertices, remove_degenerate, remove_duplicate_triangles, remove_small_components, orient_consistently, fill_holes. RF-68 welded-UV-seam documented.</summary>
  </entry>
  <entry>
    <title>RidgeForge 0.5.0</title>
    <id>tag:ridgeforge.dev,2024:release/0.5.0</id>
    <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
    <updated>2024-11-19T10:00:00Z</updated>
    <summary>PLY and binary STL read/write; Format::Auto detection by extension; WriteOptions. PLY files with double coordinates are rejected rather than narrowed (RF-74).</summary>
  </entry>
  <entry>
    <title>RidgeForge 0.4.0</title>
    <id>tag:ridgeforge.dev,2024:release/0.4.0</id>
    <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
    <updated>2024-08-06T10:00:00Z</updated>
    <summary>MeshView split out of Mesh so read-only algorithms cannot mutate. Index narrowed from 64 to 32 bits, capping meshes at 2^31-1 vertices (breaking).</summary>
  </entry>
  <entry>
    <title>RidgeForge 0.3.0</title>
    <id>tag:ridgeforge.dev,2024:release/0.3.0</id>
    <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
    <updated>2024-06-25T10:00:00Z</updated>
    <summary>Exceptions replaced by Result&lt;T&gt; and Status throughout. RF_USE_EXCEPTIONS keeps the old behaviour for allocation failure only (breaking).</summary>
  </entry>
  <entry>
    <title>RidgeForge 0.1.0</title>
    <id>tag:ridgeforge.dev,2024:release/0.1.0</id>
    <link rel="alternate" href="https://ridgeforge.dev/changelog.html"/>
    <updated>2024-05-14T10:00:00Z</updated>
    <summary>First public release: Mesh, OBJ read/write, Stats, and a decimator that re-sorted the whole edge list after every collapse.</summary>
  </entry>
</feed>
