{
  "schema_version": "2",
  "document": "project",
  "generator": "DreamWeave Mod Template 5.0.0",
  "project": {
    "id": "75bc8ccd-a1ce-4618-98d8-a757e8862304",
    "name": "dream-path",
    "summary": "Byte-first normalized virtual resource paths: one spelling for every asset lookup in DreamWeave and OpenMW-style tools.",
    "type": "library",
    "status": "active",
    "versioning": "numeric",
    "game": "morrowind",
    "license": "MIT OR Apache-2.0",
    "tags": [
      "OpenMW",
      "Rust",
      "Luau",
      "VFS"
    ],
    "maintainers": [
      {
        "name": "DreamWeave",
        "url": "https://github.com/DreamWeave-MP"
      }
    ],
    "links": {
      "crate": "https://crates.io/crates/dream-path",
      "documentation": "https://dreamweave-mp.github.io/dream_path/docs/",
      "donate": "https://ko-fi.com/magicaldave",
      "issues": "https://github.com/DreamWeave-MP/dream_path/issues",
      "page": "https://dreamweave-mp.github.io/dream_path/home/",
      "source": "https://github.com/DreamWeave-MP/dream_path"
    },
    "integrations": {},
    "media": [],
    "credits": []
  },
  "channels": {
    "stable": {
      "version": "1.1.0"
    }
  },
  "releases": [
    {
      "version": "1.1.0",
      "channel": "stable",
      "date": "2026-09-30",
      "status": "available",
      "source": {
        "repository": "https://github.com/DreamWeave-MP/dream_path",
        "tag": "1.1.0",
        "revision": "396b401c1fd1d2eefc56265baba1dd9948e77c8f"
      },
      "notes": {
        "summary": "Relicensed as MIT OR Apache-2.0 and built on l3i 1.1.0.",
        "changed": [
          "Relicensed from GPL-3.0 to MIT OR Apache-2.0: this is the first release under the new terms, and releases up to and including 1.0.0 stay GPL.",
          "l3i 1.1.0 comes from crates.io; the `@dream/path` module is unchanged."
        ]
      },
      "runtimes": {},
      "platforms": [],
      "provides": [],
      "relationships": [],
      "components": [
        {
          "id": "main",
          "name": "dream-path",
          "path": ".",
          "required": true,
          "default": true,
          "requires": [],
          "conflicts": [],
          "suggested_with": []
        }
      ],
      "groups": [],
      "extensions": {},
      "critical_extensions": [],
      "artifacts": [
        {
          "id": "crate",
          "format": "crate",
          "filename": "dream-path-1.1.0.crate",
          "media_type": "application/gzip",
          "size": 23274,
          "digests": {
            "sha256": "b254e95d7f08989cb61e67c804a461ceb37e8411db5e6443159dfecdaa730ecb"
          },
          "sources": [
            {
              "url": "https://static.crates.io/crates/dream-path/dream-path-1.1.0.crate",
              "kind": "publisher"
            }
          ],
          "signatures": []
        }
      ]
    },
    {
      "version": "1.0.0",
      "channel": "stable",
      "date": "2026-09-29",
      "status": "available",
      "source": {
        "repository": "https://github.com/DreamWeave-MP/dream_path",
        "tag": "1.0.0",
        "revision": "b3d33ea9cfa8c9a214296b6645e091a16b242c21"
      },
      "notes": {
        "summary": "First stable release: the Luau API is an l3i extension providing @dream/path, normalization is faster, and the Rust and Luau APIs are under semver.",
        "migration": "Compose `dream_path::lua::PathExtension` into the host's `RuntimePlan`. A host that still wants the\n`dreamPath` global adds `RuntimePolicy::compat_global(\"@dream/path\", \"dreamPath\")`. The functions\nand their results are unchanged.\n",
        "changed": [
          "An already-normalized path is copied as one block, and the rest folded without branches: a normalized 56-byte key costs 36 ns instead of 91 ns.",
          "A Luau call reads its path as a borrowed view and normalizes into a per-thread buffer, allocating nothing after warm-up; calls take about half as long as with `mlua`.",
          "The definitions check and the strict-script test build behind the `luau-analysis` feature (`cargo test --features luau-analysis`); `cargo test --features lua` does not build Luau's analysis frontend.",
          "l3i 1.0.0 comes from crates.io."
        ],
        "breaking": [
          "The `lua` feature binds the crate as an l3i extension, `lua::PathExtension`, providing the module `@dream/path`. `create_module`, `register_module`, `register_module_as` and the `standalone-lua` feature are gone with `mlua`.",
          "Building with the `lua` feature needs l3i's toolchain: clang, lld and cross-language thin LTO.",
          "Rust 1.92."
        ]
      },
      "runtimes": {},
      "platforms": [],
      "provides": [],
      "relationships": [],
      "components": [
        {
          "id": "main",
          "name": "dream-path",
          "path": ".",
          "required": true,
          "default": true,
          "requires": [],
          "conflicts": [],
          "suggested_with": []
        }
      ],
      "groups": [],
      "extensions": {},
      "critical_extensions": [],
      "artifacts": [
        {
          "id": "crate",
          "format": "crate",
          "filename": "dream-path-1.0.0.crate",
          "media_type": "application/gzip",
          "size": 30995,
          "digests": {
            "sha256": "141f666f9371f98d5e88a37bc388413a5acc77fae4f82d8d114e0297683010de"
          },
          "sources": [
            {
              "url": "https://static.crates.io/crates/dream-path/dream-path-1.0.0.crate",
              "kind": "publisher"
            }
          ],
          "signatures": []
        }
      ]
    },
    {
      "version": "0.2.0",
      "channel": "stable",
      "date": "2026-09-26",
      "status": "available",
      "source": {
        "repository": "https://github.com/DreamWeave-MP/dream_path",
        "tag": "0.2.0",
        "revision": "86c04bc7f43b2b78ebdd35652ffb3792dde7540e"
      },
      "notes": {
        "summary": "The Lua API runs on Luau, with camelCase names.",
        "added": [
          "`isNormalized` in Lua."
        ],
        "breaking": [
          "The Lua bindings build against `mlua` 0.12 and Luau. `standalone-lua` now selects Luau.",
          "Lua functions are camelCase (`fileName`, `isUtf8`), and the module's name is `dreamPath`."
        ]
      },
      "runtimes": {},
      "platforms": [],
      "provides": [],
      "relationships": [],
      "components": [
        {
          "id": "main",
          "name": "dream-path",
          "path": ".",
          "required": true,
          "default": true,
          "requires": [],
          "conflicts": [],
          "suggested_with": []
        }
      ],
      "groups": [],
      "extensions": {},
      "critical_extensions": [],
      "artifacts": [
        {
          "id": "crate",
          "format": "crate",
          "filename": "dream-path-0.2.0.crate",
          "media_type": "application/gzip",
          "size": 26913,
          "digests": {
            "sha256": "e583db715c69f57e21a9a6583a5eef99b707582dff189842a3cd595fa18cac31"
          },
          "sources": [
            {
              "url": "https://static.crates.io/crates/dream-path/dream-path-0.2.0.crate",
              "kind": "publisher"
            }
          ],
          "signatures": []
        }
      ]
    },
    {
      "version": "0.1.3",
      "channel": "stable",
      "date": "2026-04-27",
      "status": "available",
      "source": {
        "repository": "https://github.com/DreamWeave-MP/dream_path",
        "tag": "0.1.3",
        "revision": "86f2979eaa6c01ce8842a8e22609feb45ad888ad"
      },
      "notes": {
        "added": [
          "`bstr` is re-exported as `dream_path::bstr`, so dependents can name its types without depending on it."
        ],
        "breaking": [
          "The `ByteSlice` re-export is gone; use `dream_path::bstr::ByteSlice`."
        ]
      },
      "runtimes": {},
      "platforms": [],
      "provides": [],
      "relationships": [],
      "components": [
        {
          "id": "main",
          "name": "dream-path",
          "path": ".",
          "required": true,
          "default": true,
          "requires": [],
          "conflicts": [],
          "suggested_with": []
        }
      ],
      "groups": [],
      "extensions": {},
      "critical_extensions": [],
      "artifacts": [
        {
          "id": "crate",
          "format": "crate",
          "filename": "dream-path-0.1.3.crate",
          "media_type": "application/gzip",
          "size": 26916,
          "digests": {
            "sha256": "a19898f64cdf9fab61a1fa0f839b1ce360bc6a858db67717ff57b3e653f5c877"
          },
          "sources": [
            {
              "url": "https://static.crates.io/crates/dream-path/dream-path-0.1.3.crate",
              "kind": "publisher"
            }
          ],
          "signatures": []
        }
      ]
    },
    {
      "version": "0.1.2",
      "channel": "stable",
      "date": "2026-04-27",
      "status": "available",
      "source": {
        "repository": "https://github.com/DreamWeave-MP/dream_path",
        "tag": "0.1.2",
        "revision": "567d39ae3b84b4a71d45de943d332ab9b9afb871"
      },
      "notes": {
        "changed": [
          "Rust 1.87, and newer `bstr` and `mlua`."
        ],
        "fixed": [
          "The crate documentation no longer links the Lua API when the `lua` feature is off."
        ]
      },
      "runtimes": {},
      "platforms": [],
      "provides": [],
      "relationships": [],
      "components": [
        {
          "id": "main",
          "name": "dream-path",
          "path": ".",
          "required": true,
          "default": true,
          "requires": [],
          "conflicts": [],
          "suggested_with": []
        }
      ],
      "groups": [],
      "extensions": {},
      "critical_extensions": [],
      "artifacts": [
        {
          "id": "crate",
          "format": "crate",
          "filename": "dream-path-0.1.2.crate",
          "media_type": "application/gzip",
          "size": 26833,
          "digests": {
            "sha256": "049f18a7dce57415b003762676b86f1ac8bf074e134556823d828dcbc04059f4"
          },
          "sources": [
            {
              "url": "https://static.crates.io/crates/dream-path/dream-path-0.1.2.crate",
              "kind": "publisher"
            }
          ],
          "signatures": []
        }
      ]
    },
    {
      "version": "0.1.1",
      "channel": "stable",
      "date": "2026-04-27",
      "status": "available",
      "source": {
        "repository": "https://github.com/DreamWeave-MP/dream_path",
        "tag": "0.1.1",
        "revision": "102654313368983c4fcc5d755d690f96343d1bb5"
      },
      "notes": {
        "added": [
          "`bstr::ByteSlice` is re-exported."
        ],
        "changed": [
          "The `lua` feature no longer picks a Lua runtime: the host chooses one through its own `mlua`. `standalone-lua` selects vendored LuaJIT."
        ]
      },
      "runtimes": {},
      "platforms": [],
      "provides": [],
      "relationships": [],
      "components": [
        {
          "id": "main",
          "name": "dream-path",
          "path": ".",
          "required": true,
          "default": true,
          "requires": [],
          "conflicts": [],
          "suggested_with": []
        }
      ],
      "groups": [],
      "extensions": {},
      "critical_extensions": [],
      "artifacts": [
        {
          "id": "crate",
          "format": "crate",
          "filename": "dream-path-0.1.1.crate",
          "media_type": "application/gzip",
          "size": 27115,
          "digests": {
            "sha256": "301b5c1b23ec83d960055ac31804d1c3944fdf1b21a08b53f0a0d1bb1798cb60"
          },
          "sources": [
            {
              "url": "https://static.crates.io/crates/dream-path/dream-path-0.1.1.crate",
              "kind": "publisher"
            }
          ],
          "signatures": []
        }
      ]
    },
    {
      "version": "0.1.0",
      "channel": "stable",
      "date": "2026-04-26",
      "status": "available",
      "source": {
        "repository": "https://github.com/DreamWeave-MP/dream_path",
        "tag": "0.1.0",
        "revision": "d000a5d284cdccb28b49de45f27584ab009dda73"
      },
      "notes": {
        "summary": "First release: one normalization for virtual resource paths, and NormalizedPath to store it.",
        "added": [
          "`normalize_path`, `normalize_path_owned`, `normalize_path_in_place` and `normalize_path_into`.",
          "`NormalizedPath`, an owned key that normalizes on construction and looks up by borrowed bytes.",
          "`is_normalized_path`, and `parent`, `file_name` and `extension` over normalized bytes.",
          "Lua bindings through `mlua` and LuaJIT, behind the `lua` feature."
        ]
      },
      "runtimes": {},
      "platforms": [],
      "provides": [],
      "relationships": [],
      "components": [
        {
          "id": "main",
          "name": "dream-path",
          "path": ".",
          "required": true,
          "default": true,
          "requires": [],
          "conflicts": [],
          "suggested_with": []
        }
      ],
      "groups": [],
      "extensions": {},
      "critical_extensions": [],
      "artifacts": [
        {
          "id": "crate",
          "format": "crate",
          "filename": "dream-path-0.1.0.crate",
          "media_type": "application/gzip",
          "size": 26618,
          "digests": {
            "sha256": "77da8fbd812784ce99f7b3f700189f06055ac6e1a9671fcf2cc15e348665ebf3"
          },
          "sources": [
            {
              "url": "https://static.crates.io/crates/dream-path/dream-path-0.1.0.crate",
              "kind": "publisher"
            }
          ],
          "signatures": []
        }
      ]
    }
  ]
}
