packages feed

opt-env-conf-0.15.0.3: CHANGELOG.md

# Changelog

## [0.15.0.3] - 2026-08-11

### Changed

* Path completers now sort the directory listings they complete from.
  They previously handed back entries in whatever order the filesystem
  reported them, so the same completion produced different output on
  different machines.

## [0.15.0.2] - 2026-05-15

### Changed

* Fixed an exponential-time blowup when parsing inputs with several `many`-style
  options combined with a `choice` containing positional arguments. Parses that
  previously took minutes now complete in milliseconds. The fix makes the
  internal `ListT` nondet stream lazy in its second argument and threads inner
  branches into the outer parser on demand.

## [0.15.0.1] - 2026-03-18

### Changed

* Fixed autocompletion for paths containing `..` components.
  Paths like `../`, `../foo`, and `bar/../` now complete correctly.

## [0.15.0.0] - 2026-03-17

### Added

* `filePathWithExtension` and `filePathWithExtensions` completers for
  completing only files with specific extensions.
* `CompletionResult` and `CompletionFinality` types for per-result
  trailing-space suppression in zsh.

### Changed

* **Breaking:** `Completer` now wraps `String -> IO [CompletionResult]`
  instead of `String -> IO [String]`. Each result carries a
  `CompletionFinality` indicating whether it is final (e.g. a file — shell
  appends trailing space) or non-final (e.g. a directory — no trailing
  space). The zsh completion script uses this signal instead of the `*/`
  suffix heuristic.
* `withLocalYamlConfig` (via `configuredConfigFile`) now completes only
  `.yaml` and `.yml` files instead of all files.
* Fixed `filePathSetting` and `directoryPathSetting` so that user-provided
  builders (e.g. `completer`, `metavar`) take precedence over the built-in
  defaults instead of being silently overridden.
* Fixed completion for options next to default commands with arguments.
  When a default command's argument parser speculatively consumed a dashed
  option (e.g. `--archive-dir`) as a positional value, sibling parsers in
  the same applicative could no longer see it, suppressing their completers.

## [0.14.1.0] - 2026-02-25

### Added

* `renderSettingsNixOptionsWithGeneratedComment`
* `renderParserNixOptionsWithGeneratedComment`
* `withGeneratedComment`

### Changed

* The `--render-nix-options` CLI output now includes a generated file comment

## [0.14.0.0] - 2025-12-03

### Changed

* Source location package names are now cleaned up to not contain a hash.
  This makes it possible to use them in golden tests.

## [0.13.0.0] - 2025-11-18

### Added

* Capability support for settings.

This is technically a breaking change, but if you don't use any `opt-env-conf`
internals, nothing should break for you.

### Changed

* Renamed `requireCapability` to `checkWithRequiredCapability`.
* Fixed that `showSettingABit` did not show every part of a setting.

## [0.12.2.0] - 2025-11-18

### Changed

* Fixed a bug in which parse errors would be ignored during checking as soon as
  one missing capability was encountered.

## [0.12.0.0] - 2025-11-15

### Added

* Support for capabilities during settings parsing, and disabling them in the
  settings check.

This is technically a breaking change, but if you don't use any `opt-env-conf`
internals, nothing should break for you.

## [0.11.1.0] - 2025-10-23

### Added

* Windows support by isolating platform-specific terminal code.

## [0.11.0.0] - 2025-09-29

This is technically a breaking change, but if you don't use any `opt-env-conf`
internals, nothing should break for you.

### Changed

* `ParserMany` and `ParserSome` can now carry source locations.
  This is not likely to happen often because the `Alternative` class does not
  have a `HasCallStack` super class, but could still happen when using
  `someNonEmpty`.

## [0.10.0.0] - 2025-09-17

This is technically a breaking change, but if you don't use any `opt-env-conf`
internals, nothing should break for you.

### Added

* `unprefixedEnv`
* `unprefixedConf`

## [0.9.0.0] - 2025-03-12

### Added

* Completions

## [0.8.0.1] - 2024-12-22

### Changed

* Fixed that `secretTextFileOrBareSetting` would not pass the linter without
  `name`.

## [0.8.0.0] - 2024-11-05

### Changed

* Change `withShownDefault` and `valueWithShown` to accept a function to use in
  place of `show` rather than a pre-rendered `String`.

## [0.7.0.1] - 2024-10-27

### Changed

* Fixed a bug in which `allOrNothing` (and `subSettings`) could malfunction
  when using a common library setting multiple times.

## [0.7.0.0] - 2024-10-27

### Added

* The `allOrNothing` error now shows which settings were defined.

## [0.6.0.4] - 2024-10-26

### Added

* Added a lint for an unknown default command.

## [0.6.0.3] - 2024-10-24

### Added

* `withDefault` and `withShownDefault`.

## [0.6.0.2] - 2024-10-20

### Changed

* Fixed that configuration parsing errors were double-`show`n.

## [0.6.0.1] - 2024-10-18

### Added

* `secretTextFileSetting`
* `secretTextFileOrBareSetting`

## [0.6.0.0] - 2024-10-18

### Added

* `defaultCommand`

### Changed

* `commands` now takes `CommandsBuilder`s.

## [0.5.1.1] - 2024-08-08

### Changed

* Fixed a bug in which a `setting` with only a default `value` was considered invalid.

## [0.5.1.0] - 2024-08-08

### Removed

* Removed the "undecodable example" lint because it was faulty when example values aren't Strings.

## [0.5.0.1] - 2024-08-04

### Changed

* Errors involving commands now show command descriptions.

## [0.5.0.0] - 2024-08-03

### Changed

* Made `Builder`s contain a list of `BuildInstructions` so library functions
  can pattern-match on the builders.
* `yesNoSwitch` and `enableDisableSwitch` now no longer take a default value,
  but accept default `value` builders instead.
* Renamed 'viaCodec' to 'viaStringCodec'.
* Clearer lints when using `name`.
* Clearer lint about loading configuration.
* Default values are now shown at the end but before example values in documentation.
* Proper `[--optional-option-docs]`

## [0.4.0.5] - 2024-07-28

### Added

* Documentation now shows example values and default values.

## [0.4.0.4] - 2024-07-28

### Added

* Added a lint for examples that none of the configuration codecs can decode.

### Changed

* Fixed: linter would 'catch' unreadable examples even though a setting would only read a configuration value

## [0.4.0.3] - 2024-07-28

### Changed

* Support (commands [..] <|> commands [..]) by concat-ing the lists of commands.
* Improved the documentation of parsers that use `some`.

## [0.4.0.2] - 2024-07-27

### Changed

* Fixed a bug in which unrecognised arguments would be parsed exponentially.
* The special `--version` command no longer allows any other arguments.
* Fixed a bug in which some source locations still showed up even though debug mode was not on.
* Fixed that only one codec for a configuration setting was tried.

## [0.4.0.1] - 2024-07-26

### Added

* The `viaCodec` reader.

## [0.4.0.0] - 2024-07-23

### Added

* Added a hidden `--render-reference-documentation` command.
* Added a per-command `--help` page.

### Changed

* Changed the name of `mkSettingsCheck` to `makeSettingsCheck`.

## [0.3.0.0] - 2024-07-19

### Changed

* Debug mode now provides much more info about all the settings that were and weren't parsed, and why.
* Fixed a bug in which arguments that were consumed in a failed branch were not being unconsumed afterwards.
* Nix functions now produce completion as well as man pages.

## [0.2.0.0] -- 2024-07-18

### Changed

* Fixed that the settings check could not be run with arguments.
* Added a lint to check that `long` isn't used without `option` or `switch`.
* Added a lint to check that `many` cannot be used with a parser that can succeed without consuming anything.

## [0.1.0.0] - 2024-07-16

### Changed

* `xdgYamlConfigFile` now returns a `Path Abs File` instead of a `FilePath`.
* Fixed a bug in `withFirstYamlConfig` and `withCombinedYamlConfig` in which the `--config-file` option was required.
* `--run-settings-check` now allows you to define a static settings check.
* Parse the combination of optional switches and optional arguments correctly.
* Fail to parse if any arguments are leftover.

## [0.0.0.0] - 2024-07-08

First version