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
-
3.0.2 stable
Built on l3i 1.1.0.
Changed
- l3i 1.1.0 comes from crates.io; the
@dream/openmw-configmodule is unchanged.
openmw-config 3.0.2Verify · 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.
- l3i 1.1.0 comes from crates.io; the
-
3.0.1 stable
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
luaufeature 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, themluatypes and thestandalone-luafeature are gone. - Building with the
luaufeature 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, eachconfig=directory is read once, aconfig=directory without anopenmw.cfgstays in the chain, the user config directory is created on load,replace=applies per config over the configs loaded before it,replace=configkeeps the root and theconfig=entries still to load,replace=replacediscards thereplace=lines of earlier configs,replace=values match option names exactly, andresources=,user-data=,data-local=andencoding=are left alone byreplace=. - 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,
SettingValueexported so predicates can name what they are given, and themeta()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_subconfigandDisplaykeepreplace=lines; list replacements and removals persist throughreplace=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/vfsdata directory is no longer written back as adata=line on every save; the directoriesresources=anddata-local=add stay in step with them. - Windows and macOS fall back to the user config; the
io::ErrorbehindConfigError::Iois reachable throughsource(). add_archive_filereturnsCannotAddArchiveFileon a duplicate;replace=fallback-archiveis read and written under the option name OpenMW uses.set_game_settingwrites 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=orencoding=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.1Verify · 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.
- The
-
2.0.1 stable
Changed
- Relicensed under MIT OR Apache-2.0.
Known issues
save_user,save_subconfigandDisplaydropreplace=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 injectedresources/vfsdirectory back as adata=line, and each save and reload adds another copy. Fixed on the default branch.
openmw-config 2.0.1Verify · 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.
-
2.0.0 stable
The Lua bindings run on Luau.
Breaking changes
- The bindings build against
mlua0.12 and theluafeature no longer selects a Lua runtime: the host application picks one through its ownmluadependency.standalone-luaselects Luau for this crate’s tests and docs. The Lua API itself is unchanged.
Migration
Add
mluato your own dependencies with the runtime you embed, and keepfeatures = ["lua"]on this crate:openmw-config = { version = "2", features = ["lua"] } mlua = { version = "0.12", default-features = false, features = ["luau"] }openmw-config 2.0.0Verify · 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.
- The bindings build against
-
1.1.0 stable
Discovery for external tools.
Added
from_env_or_user_config: OpenMW’s root discovery, then the user config when there is no root config.fromEnvOrUserConfigin Lua.try_default_root_or_user_config_pathanddefault_user_config_file.
Fixed
- A config loaded through a symlink keeps the path it was loaded from.
openmw-config 1.1.0Verify · 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.
-
1.0.5 stable
APIs for importers: start empty, load if present, export flattened.
Added
new_emptyandload_optional, which start from an empty configuration without inventing anopenmw.cfg.to_resolved_stringandsave_resolved_to_path: a flattened export with resolved paths and noconfig=orreplace=entries.- The same four in Lua:
newEmpty,loadOptional,toResolvedString,saveResolvedToPath.
openmw-config 1.0.5Verify · 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.
-
1.0.4 stable
Added
- The root config helpers
try_default_root_config_pathandtry_default_global_config_path, andOPENMW_GLOBAL_CONFIG_PATH.
Changed
from_envuses OpenMW’s own root discovery:OPENMW_CONFIG,OPENMW_CONFIG_DIR, then anopenmw.cfgbeside the executable, then the global config. It no longer falls back to the user config.
openmw-config 1.0.4Verify · 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.
- The root config helpers
-
1.0.3 stable
Fixed
- Saving no longer writes the injected
data-localdirectory back as adata=line. encoding=no longer gains a blank line on every save.
openmw-config 1.0.3Verify · 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.
- Saving no longer writes the injected
-
1.0.2 stable
Added
set_generic_settings,add_generic_settingandsave_to_path.- In Lua:
genericSettings,setGenericSettings,addGenericSettingandsaveToPath. Setting rows carrysourceandcomment.
Fixed
- Saving over a read-only file on Windows.
save_to_pathchecks that the destination directory is writable.
openmw-config 1.0.2Verify · 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.
-
1.0.1 stable
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
Vecare gone; collect the iterators instead.
Added
- Lua bindings through
mlua, behind theluafeature:create_lua_moduleand a camelCase API. - Flatpak-aware
?userconfig?and?userdata?, andOPENMW_FLATPAK_ID. default_local_pathanddefault_global_path, for?local?and?global?, with fallibletry_variants.user_config_ref, which leaves the configuration in place, and&strviews 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.
dirsandshellexpandare 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=configdiscards earlier settings and queuedconfig=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.1Verify · 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.
- Methods that built a
-
1.0.0 stable
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.0Verify · 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.
-
0.1.93 stable
Added
EncodingSetting::valuereturns 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.93Verify · 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.
-
0.1.92 stable
Fixed
?userconfig?resolves correctly.resources=no longer addsvfs-mw: the local or global config lists it itself.
openmw-config 0.1.92Verify · 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.
-
0.1.91 stable
Fixed
- Android paths, again.
openmw-config 0.1.91Verify · 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.
-
0.1.9 stable
Fixed
- Android paths.
openmw-config 0.1.9Verify · 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.
-
0.1.8 stable
Added
- Android’s config and userdata directories.
openmw-config 0.1.8Verify · 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.
-
0.1.7 stable
Changed
- New repository URL, and the license stated explicitly.
openmw-config 0.1.7Verify · 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.
-
0.1.5 stable
Fixed
- Serializing a configuration wrote it onto a single line.
openmw-config 0.1.5Verify · 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.
-
0.1.4 stable
Changed
- The setting types are public.
resources=anddata-local=add their directories to the data directories.
openmw-config 0.1.4Verify · 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.
-
0.1.3 stable
Added
OPENMW_CONFIGandOPENMW_CONFIG_DIRchoose the root config.
openmw-config 0.1.3Verify · 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.
-
0.1.2 stable
Fixed
- The Windows user config is
Documents/My Games/openmw. - Data directories and
config=entries no longer keepopenmw.cfgin their paths.
openmw-config 0.1.2Verify · 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.
- The Windows user config is
-
0.1.1 stable
Comments, unknown keys and groundcover survive a round trip.
Added
groundcover=entries.- Unknown
key=valuelines are kept as generic settings and written back. - Comments are kept with the setting that follows them and written back.
- Typed
fallback=settings, withset_game_settingtaking the line’s text. root_config_file,root_config_diranduser_config, and presence helpers for content files and archives.ConfigError, one error type for the whole crate.
Fixed
- The key is
user-data, notuserdata. - 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.1Verify · 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.
-
0.1.0 stable
First release: read an openmw.cfg chain into one configuration.
openmw-config 0.1.0Verify · 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.