Skip to content
openmw-config

openmw-configChangelog

Changelog

Every release of openmw-config, newest first. A release marked unreleased is declared in mod.toml and published when its tag is pushed.

Releases

23 declared

  1. 3.0.2 stable 2026-09-30

    Built on l3i 1.1.0.

    Changed

    • l3i 1.1.0 comes from crates.io; the @dream/openmw-config module is unchanged.
    openmw-config 3.0.2 104.83 kB · crates.io
    View on crates.io
    Verify · sha256 a8982aa239db…ea3d914e
    File
    openmw-config-3.0.2.crate
    Size
    107346 bytes
    SHA-256
    a8982aa239db62d6c8d0c28d56f0af05dd114803b78c4e473755185eea3d914e

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  2. 3.0.1 stable 2026-09-29

    The Luau bindings are an l3i extension with live views and typed rows, the loader reads config= chains exactly as OpenMW’s engine does, and the site is built with the DreamWeave Mod Template.

    Breaking changes

    • The luau feature makes the crate an l3i extension, openmw_config::luau::extension(), providing the module @dream/openmw-config, with live views over the loaded configuration and typed rows. create_lua_module, the mlua types and the standalone-lua feature are gone.
    • Building with the luau feature needs l3i’s toolchain: clang, lld and cross-language thin LTO. Rust 1.92.
    • The loader matches OpenMW’s engine: config= entries load depth first, each config= directory is read once, a config= directory without an openmw.cfg stays in the chain, the user config directory is created on load, replace= applies per config over the configs loaded before it, replace=config keeps the root and the config= entries still to load, replace=replace discards the replace= lines of earlier configs, replace= values match option names exactly, and resources=, user-data=, data-local= and encoding= are left alone by replace=.
    • The crate’s internal macros are no longer exported.
    • Built, released and documented with the DreamWeave Mod Template; the site replaces the rustdoc pages.

    Added

    • Typed game setting values and setting metadata, SettingValue exported so predicates can name what they are given, and the meta() and typed accessors every setting type has.
    • The views declare their element types, so strict scripts read them directly; items are pushed by value.
    • A Criterion benchmark for the Luau boundary.

    Changed

    • List positions are indexed, game settings iterate without cloning, settings are no longer formatted on load, and the lookup indexes hash with FxHash.
    • l3i 1.0.0 comes from crates.io.

    Fixed

    • save_user, save_subconfig and Display keep replace= lines; list replacements and removals persist through replace= lines in the user config, and a parent’s entries stay in the parent’s file when the user config replaces a list.
    • The injected resources/vfs data directory is no longer written back as a data= line on every save; the directories resources= and data-local= add stay in step with them.
    • Windows and macOS fall back to the user config; the io::Error behind ConfigError::Io is reachable through source().
    • add_archive_file returns CannotAddArchiveFile on a duplicate; replace=fallback-archive is read and written under the option name OpenMW uses.
    • set_game_setting writes its comments as comment lines, and the comments and blank lines that end a config file survive the settings added after them.
    • The setting indexes are rebuilt when singleton settings change and after data directories are injected; a parent’s relative data directory is written resolved when the user config copies it; a parent’s resources=, user-data=, data-local= or encoding= stays in place when the user sets one.
    • The live-view generation counter advances without wrapping, so a stale row can never read as current again.
    openmw-config 3.0.1 104.84 kB · crates.io
    View on crates.io
    Verify · sha256 f0fe76e8e1e0…3bda9562
    File
    openmw-config-3.0.1.crate
    Size
    107355 bytes
    SHA-256
    f0fe76e8e1e03e0651bad34b5989d61a6524e3b36372eb77da89f1363bda9562

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  3. 2.0.1 stable 2026-09-27

    Changed

    • Relicensed under MIT OR Apache-2.0.

    Known issues

    • save_user, save_subconfig and Display drop replace= lines, so a saved user config merges its parents’ entries back in on the next load. Fixed on the default branch.
    • A config with resources= writes the injected resources/vfs directory back as a data= line, and each save and reload adds another copy. Fixed on the default branch.
    openmw-config 2.0.1 84.73 kB · crates.io
    View on crates.io
    Verify · sha256 b0413b8898c3…2bee2f33
    File
    openmw-config-2.0.1.crate
    Size
    86762 bytes
    SHA-256
    b0413b8898c3277e267c033b95d5b343d9c1ebb692d17f99a4af25232bee2f33

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  4. 2.0.0 stable 2026-09-26

    The Lua bindings run on Luau.

    Breaking changes

    • The bindings build against mlua 0.12 and the lua feature no longer selects a Lua runtime: the host application picks one through its own mlua dependency. standalone-lua selects Luau for this crate’s tests and docs. The Lua API itself is unchanged.

    Migration

    Add mlua to your own dependencies with the runtime you embed, and keep features = ["lua"] on this crate:

    openmw-config = { version = "2", features = ["lua"] }
    mlua = { version = "0.12", default-features = false, features = ["luau"] }
    openmw-config 2.0.0 92.25 kB · crates.io
    View on crates.io
    Verify · sha256 1a51b248273e…4f4ace08
    File
    openmw-config-2.0.0.crate
    Size
    94464 bytes
    SHA-256
    1a51b248273e07a85c592dd370b74e6449f0c36fb338e1e0d01e4f614f4ace08

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  5. 1.1.0 stable 2026-06-04

    Discovery for external tools.

    Added

    • from_env_or_user_config: OpenMW’s root discovery, then the user config when there is no root config. fromEnvOrUserConfig in Lua.
    • try_default_root_or_user_config_path and default_user_config_file.

    Fixed

    • A config loaded through a symlink keeps the path it was loaded from.
    openmw-config 1.1.0 93.44 kB · crates.io
    View on crates.io
    Verify · sha256 016350068cba…f88dd849
    File
    openmw-config-1.1.0.crate
    Size
    95679 bytes
    SHA-256
    016350068cba3d4d4f93c85448c1ad9d1d34934a56c11bd2813dcb57f88dd849

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  6. 1.0.5 stable 2026-05-07

    APIs for importers: start empty, load if present, export flattened.

    Added

    • new_empty and load_optional, which start from an empty configuration without inventing an openmw.cfg.
    • to_resolved_string and save_resolved_to_path: a flattened export with resolved paths and no config= or replace= entries.
    • The same four in Lua: newEmpty, loadOptional, toResolvedString, saveResolvedToPath.
    openmw-config 1.0.5 90.45 kB · crates.io
    View on crates.io
    Verify · sha256 ba29c2402a09…62f53bf7
    File
    openmw-config-1.0.5.crate
    Size
    92621 bytes
    SHA-256
    ba29c2402a093283f70200f571ef4d485a91a133ef5372469ef8464e62f53bf7

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  7. 1.0.4 stable 2026-05-04

    Added

    • The root config helpers try_default_root_config_path and try_default_global_config_path, and OPENMW_GLOBAL_CONFIG_PATH.

    Changed

    • from_env uses OpenMW’s own root discovery: OPENMW_CONFIG, OPENMW_CONFIG_DIR, then an openmw.cfg beside the executable, then the global config. It no longer falls back to the user config.
    openmw-config 1.0.4 86.88 kB · crates.io
    View on crates.io
    Verify · sha256 45a9c9a4cb52…0a63141d
    File
    openmw-config-1.0.4.crate
    Size
    88968 bytes
    SHA-256
    45a9c9a4cb5226802c1bfa1a3417c3efea795ae7bf91b38b4514d2c00a63141d

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  8. 1.0.3 stable 2026-05-01

    Fixed

    • Saving no longer writes the injected data-local directory back as a data= line.
    • encoding= no longer gains a blank line on every save.
    openmw-config 1.0.3 83.90 kB · crates.io
    View on crates.io
    Verify · sha256 6b2219513178…66df9fbb
    File
    openmw-config-1.0.3.crate
    Size
    85918 bytes
    SHA-256
    6b22195131785a261ccbb11699e594fc35e1b5d46edaacde3878ecb566df9fbb

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  9. 1.0.2 stable 2026-04-24

    Added

    • set_generic_settings, add_generic_setting and save_to_path.
    • In Lua: genericSettings, setGenericSettings, addGenericSetting and saveToPath. Setting rows carry source and comment.

    Fixed

    • Saving over a read-only file on Windows.
    • save_to_path checks that the destination directory is writable.
    openmw-config 1.0.2 82.92 kB · crates.io
    View on crates.io
    Verify · sha256 8f83558df90a…72a1e955
    File
    openmw-config-1.0.2.crate
    Size
    84906 bytes
    SHA-256
    8f83558df90a23207feb3d4b9cb19438ef2d98a1a04809d119127d9c72a1e955

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  10. 1.0.1 stable 2026-04-19

    First stable release: parsing that matches OpenMW’s, Lua bindings, and Flatpak paths.

    openmw-config 1.0 reads a config chain the way OpenMW does: config= entries level by level, replace= applied as it is read, and line numbers in every parse error. It adds embedded Lua bindings with a camelCase API and resolves tokens correctly inside Flatpak.

    Breaking changes

    • Methods that built a Vec are gone; collect the iterators instead.

    Added

    • Lua bindings through mlua, behind the lua feature: create_lua_module and a camelCase API.
    • Flatpak-aware ?userconfig? and ?userdata?, and OPENMW_FLATPAK_ID.
    • default_local_path and default_global_path, for ?local? and ?global?, with fallible try_ variants.
    • user_config_ref, which leaves the configuration in place, and &str views of setting values.
    • config_chain, the parser-order record of loaded and skipped configs.
    • Parse errors carry the line they came from.

    Changed

    • Relicensed under GPL-3.0-or-later.
    • dirs and shellexpand are replaced by the standard library. On Windows, the Documents folder comes from the Known Folder API.
    • Queries on content files, archives, data directories and game settings are indexed.

    Fixed

    • config= entries load level by level, siblings before their children, as OpenMW loads them.
    • replace=config discards earlier settings and queued config= entries.
    • fallback= values keep their exact spelling through a round trip.
    • Game settings are deduplicated by key.
    • Path comparisons normalize separators.
    openmw-config 1.0.1 81.08 kB · crates.io
    View on crates.io
    Verify · sha256 6d1de5672309…d38e8da3
    File
    openmw-config-1.0.1.crate
    Size
    83027 bytes
    SHA-256
    6d1de5672309e01372dd9c68234c8672995688daf035711f21445e38d38e8da3

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  11. 1.0.0 stable 2026-04-19

    Yanked: Yanked on crates.io. Use 1.0.1 instead.

    The 1.0 release, published under MIT OR Apache-2.0.

    openmw-config 1.0.0 73.50 kB · crates.io
    View on crates.io
    Verify · sha256 adda9e405739…3aa1099b
    File
    openmw-config-1.0.0.crate
    Size
    75263 bytes
    SHA-256
    adda9e405739d0d273ba3884332b88d7213919fce0c697b2dae67e053aa1099b

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  12. 0.1.93 stable 2026-04-06

    Added

    • EncodingSetting::value returns the encoding.

    Fixed

    • Relative config paths are made absolute, and empty ones are refused, including from the environment.
    • Config paths are validated through symlinks.
    • Paths keep their . and .. components instead of losing parts of the path.
    openmw-config 0.1.93 20.51 kB · crates.io
    View on crates.io
    Verify · sha256 28d5864a0c79…6431a5e9
    File
    openmw-config-0.1.93.crate
    Size
    21003 bytes
    SHA-256
    28d5864a0c7959014015231f01c702e6c08e3bfda747c34926c071956431a5e9

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  13. 0.1.92 stable 2025-10-03

    Fixed

    • ?userconfig? resolves correctly.
    • resources= no longer adds vfs-mw: the local or global config lists it itself.
    openmw-config 0.1.92 19.58 kB · crates.io
    View on crates.io
    Verify · sha256 8de9c067ddaf…a217dd54
    File
    openmw-config-0.1.92.crate
    Size
    20045 bytes
    SHA-256
    8de9c067ddaff3a71a77f26ff8fa5e120d2dc3e0feed10fbeb65a789a217dd54

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  14. 0.1.91 stable 2025-09-04

    Fixed

    • Android paths, again.
    openmw-config 0.1.91 19.60 kB · crates.io
    View on crates.io
    Verify · sha256 4648a14e4425…5b30a970
    File
    openmw-config-0.1.91.crate
    Size
    20071 bytes
    SHA-256
    4648a14e4425ca329558c85efb73f61bea54cde65ae09260734b28125b30a970

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  15. 0.1.9 stable 2025-09-02

    Fixed

    • Android paths.
    openmw-config 0.1.9 19.60 kB · crates.io
    View on crates.io
    Verify · sha256 cda8d6691d1a…90070f64
    File
    openmw-config-0.1.9.crate
    Size
    20067 bytes
    SHA-256
    cda8d6691d1a8597aa5cd38bdaab3d24718583a2493197c7dc19f45690070f64

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  16. 0.1.8 stable 2025-09-02

    Added

    • Android’s config and userdata directories.
    openmw-config 0.1.8 19.62 kB · crates.io
    View on crates.io
    Verify · sha256 e73fee1c5617…ed59df17
    File
    openmw-config-0.1.8.crate
    Size
    20086 bytes
    SHA-256
    e73fee1c56170c13c175af35a2390b3df503815f7f4980771aef34cbed59df17

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  17. 0.1.7 stable 2025-07-18

    Changed

    • New repository URL, and the license stated explicitly.
    openmw-config 0.1.7 19.49 kB · crates.io
    View on crates.io
    Verify · sha256 6155ad321e92…8f4a0029
    File
    openmw-config-0.1.7.crate
    Size
    19958 bytes
    SHA-256
    6155ad321e929da5708b61ff719fca69401124528ce14b305528ec068f4a0029

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  18. 0.1.5 stable 2025-07-03

    Fixed

    • Serializing a configuration wrote it onto a single line.
    openmw-config 0.1.5 18.82 kB · crates.io
    View on crates.io
    Verify · sha256 f086d63f455f…28068dae
    File
    openmw-config-0.1.5.crate
    Size
    19268 bytes
    SHA-256
    f086d63f455fcbc01cc95ded51b3ce11841e510a4819f1c427771c5428068dae

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  19. 0.1.4 stable 2025-07-02

    Changed

    • The setting types are public.
    • resources= and data-local= add their directories to the data directories.
    openmw-config 0.1.4 18.81 kB · crates.io
    View on crates.io
    Verify · sha256 6e28de3d112e…42076e26
    File
    openmw-config-0.1.4.crate
    Size
    19261 bytes
    SHA-256
    6e28de3d112e0c343cf476dbf5677b1dd017ce739447cb1bda86eb9642076e26

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  20. 0.1.3 stable 2025-06-24

    Added

    • OPENMW_CONFIG and OPENMW_CONFIG_DIR choose the root config.
    openmw-config 0.1.3 18.70 kB · crates.io
    View on crates.io
    Verify · sha256 a9df34491dbc…4a794d9d
    File
    openmw-config-0.1.3.crate
    Size
    19145 bytes
    SHA-256
    a9df34491dbc6ca4d7e0152674a12b85399e449b567868effd6564c14a794d9d

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  21. 0.1.2 stable 2025-06-17

    Fixed

    • The Windows user config is Documents/My Games/openmw.
    • Data directories and config= entries no longer keep openmw.cfg in their paths.
    openmw-config 0.1.2 18.45 kB · crates.io
    View on crates.io
    Verify · sha256 dcf0230b1f44…99f9bb7d
    File
    openmw-config-0.1.2.crate
    Size
    18894 bytes
    SHA-256
    dcf0230b1f44e975283a24835e30732b0433a7aa58de921cd86c875199f9bb7d

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  22. 0.1.1 stable 2025-06-17

    Comments, unknown keys and groundcover survive a round trip.

    Added

    • groundcover= entries.
    • Unknown key=value lines are kept as generic settings and written back.
    • Comments are kept with the setting that follows them and written back.
    • Typed fallback= settings, with set_game_setting taking the line’s text.
    • root_config_file, root_config_dir and user_config, and presence helpers for content files and archives.
    • ConfigError, one error type for the whole crate.

    Fixed

    • The key is user-data, not userdata.
    • Content files added at runtime are attributed to the user’s openmw.cfg, not its directory.
    • Singleton settings read their last definition.
    • Symlinked configs no longer fail to load.
    openmw-config 0.1.1 18.36 kB · crates.io
    View on crates.io
    Verify · sha256 b6884cc1a494…cc08ac3e
    File
    openmw-config-0.1.1.crate
    Size
    18800 bytes
    SHA-256
    b6884cc1a49423e0990cd5034d29af2aa35cffb9e94f6167bf0ac831cc08ac3e

    The same digest as the crates.io index's checksum, which Cargo checks on every download.

  23. 0.1.0 stable 2025-06-17

    First release: read an openmw.cfg chain into one configuration.

    openmw-config 0.1.0 18.36 kB · crates.io
    View on crates.io
    Verify · sha256 f35029ee5377…a588e27a
    File
    openmw-config-0.1.0.crate
    Size
    18802 bytes
    SHA-256
    f35029ee5377add4ffd8b94234af55e1471c541966f3e5bd9b0af689a588e27a

    The same digest as the crates.io index's checksum, which Cargo checks on every download.