Appearance
Changelog
All notable changes to this project are documented here. Versions follow Semantic Versioning. Format follows Keep a Changelog.
[2.5.3] — 2026-10-08
Fixed
ci: Run install smoke test from the release workflow
group: Sanitize the list defaults of commands not called
[2.5.2] — 2026-10-04
Security
- docs: Set an es2022 build target for the VitePress site
[2.5.1] — 2026-10-02
Documentation
A new first impression, with an animated quick start
Point the install pins at v2.5.0
migration: Add the v2.5.0 upgrade notes
One reading path instead of a Guide and a Manual
cookbook: Fifteen more recipes, without the Python table
Fixed
cli: Set error_message for the errors of groups and arguments
cli: Do not print the unknown arguments that are ignored
[2.5.0] — 2026-10-02
Fixed
- build: Rename the quad precision macro _R16P to PENF_R16P ⚠ BREAKING CHANGE
[2.4.1] — 2026-10-01
Documentation
Audit the guide against v2.4.0, samples built and run by a harness
manual: A tutorial, a cookbook and terminal images
Point the install pins and the upgrade notes at v2.4.1
Fixed
cla: Check the choices of a character value before truncating it
cla: Render a store* option with its switch
cla: Report a value that is not a number as ERROR_CASTING_NUMBER
completion: Name the bash function after the program
messages: Clearer wording of five error messages
help: A consistent layout of the help, man page and Markdown ⚠ BREAKING CHANGE
[2.4.0] — 2026-09-30
Added
cli: Usage_on_error, a shorter output after an error
cli: --man builtin and the file names of --man and --markdown
Fixed
- completion: Bash offers the options not yet typed, of the last command
[2.3.1] — 2026-09-30
Documentation
- Colours section, current build commands, upgrade page
Fixed
- parse: A repeated command is an error
[2.3.0] — 2026-09-30
Added
menu: Flap_menu_t, interactive single-choice menus
menu: Default options and default icon
menu: Retries, error kinds and end-of-input handling
menu: Multiple selection with separator
menu: Yes/no questions
menu: Option, question and error colours via FACE
[2.2.0] — 2026-09-30
Added
cla: Metavar, the placeholder of a value in the help
completion: Bash file-name fallback and zsh completion
completion: Native fish completion script
completion: PowerShell completion script
completion: --show-completion and --install-completion
[2.1.0] — 2026-09-30
Added
cla: Numeric ranges min/max/open/clamp, checked by get
cla: Switch_neg flag pairs --x/--no-x, the last one wins
cli: Case-insensitive switches, commands and choices
cli: Subcommand aliases, add_group(aliases=)
parse: "did you mean" suggestions for unknown switches and commands
cla: Key=value options, add(map=, map_keys=), get_map
cli: Copy_options, reusable option sets between commands
[2.0.0] — 2026-09-30
Added
cli: Standalone init option; parse returns the help/version/markdown status
cli: Print "Try 'prog --help' for help." after a failed parse
cli: Raise_error for application-level errors
cli: No_args_is_help at CLI and command level
parse: Accept --option=value inline values
parse: Count action, with the compact -vvv form
parse: Append action collecting one value per occurrence
cli: Mutually exclusive sets of switches, optionally required
cli: Ignore_env init option turning every environment lookup off
envvar: Environment as the value source of an absent option ⚠ BREAKING CHANGE
cli: Auto_envvar_prefix generating the envvar of every option
envvar: List options read their variable as comma-separated values
config: INI configuration files as a value source (set_config)
cla: Act='config' option naming the configuration file
cli: Get_source and provenance, where every value comes from
cla: Path checks must_exist, readable, writable, allow_dash
cla: Deprecated options and commands warn when used
parse: Exclusive sets count every explicit source, command line first
parse: Alternate actions returning STATUS_ALTERNATE
parse: An explicitly empty value is the empty string ⚠ BREAKING CHANGE
parse: Nargs='*' passed without values is an empty list ⚠ BREAKING CHANGE
Changed
- cla: Record the source of every value, getters use has_value
Fixed
release: Push only the new tag, not every reachable one
utils: Let nvfortran compile wstrip
cli: Store strings arrays as flap_string elements, runnable with nvfortran ⚠ BREAKING CHANGE
cli: A failed add no longer leaks its error into the next ones
[1.3.0] — 2026-09-29
Added
flap: Re-export all error and status codes from the flap module
cli: Add reset_parse to parse again without redefining the CLI
Changed
parse: Match switch names through one matcher
list: Store and read lists through one API
cli: Split parse into a wrapper and parse_core; share the error prefix
usage: One renderer per output of an argument's signature
Delete the dead assignment(=) overloads
Documentation
claude: Rewrite stale project guide for FoBiS 3.8 and VitePress
claude: Document r16p mode and correct legacy flag claim
release: Add the v1.3.0 upgrade guide; bump CMake and fpm versions on release
Fixed
fobos: Use --gcov-analyzer flag for current FoBiS.py version
fobos: Repeat --gcov-analyzer flag for each argument value
cli: Work around gfortran 16 ICE in array-of-derived-type assignment
docs: Remove trailing comma in package.json devDependencies
docs: Untrack package-lock and pin esbuild for lock-free vite build
build: Add flap_test_utils to the makefile
parse: Report a duplicated switch on its own CLA and stop parsing
cla: Guard nargs before reading it in check_list_size
parse: Split argument strings with a single-pass quote scanner
cli: Read arguments whole and drop the gfortran fixed-length workaround
cla: Raise an error when get receives an unsupported variable type
parse: Assign positionals by their declared position
parse: Never take the value of an option as a command name
cla: Work around gfortran 13.3/14.2 corrupting character list values
cla: Enforce choices on every value of a varying-size list
cli: Include the builtin switches in outputs generated before parse
utils: Correct count, unique and replace_all in flap_utils_m
output: Correct the completion shebang and check file errors in save_*
object: Handle examples in free_object, assign_object and set_examples
cli: Return from get when the group is unknown
parse: Let a nargs='N' option take N values when more follow
completion: Generate a clean, stateless bash completion function
env: Read environment variables through one helper, at any length
cli: Resolve group names through one resolver, -1 when undefined
get: Reject a fixed-size array whose size differs from the list
get: Return the values of a list of flags from get_varying
add: Reject a list default whose count differs from nargs
add: Reject duplicate and missing positions
[1.2.14] — 2026-03-02
Documentation
- Refactor README to match StringiFor style conventions
[1.2.12] — 2026-02-18
Documentation
- Overhaul README and restructure VitePress guide
[1.2.8] — 2026-02-18
Documentation
- Add VitePress guide section and formal-generated API reference
[1.2.7] — 2026-02-18
Documentation
Add CLAUDE.md with build commands and architecture guide
Migrate documentation pipeline from FORD to formal + VitePress
[0.6.1] — 2015-07-02
Security
- Fix deploy.sh script