12025-08-15 Version 1.1 2 3 Library: 4 * add: bsddialog_slider(). 5 Thanks to https://gitlab.com/alfix/bsddialog/-/merge_requests/7 6 7 Utility: 8 * add: --slider dialog. 9 Thanks to https://gitlab.com/alfix/bsddialog/-/merge_requests/7 10 112025-06-22 Version 1.0.5 12 13 Manual: 14 * fix: "User-friendly documentation for alternate screen" 15 https://bugs.freebsd.org/285459. 16 Improve bsddialog.1: --alternate-screen and --normal-screen. 17 18 NetBSD (tested on amd64) refactoring, no function changes: 19 * https://gitlab.com/alfix/bsddialog/-/merge_requests/4 20 lib: include <stdarg.h> in lib_util.c. 21 * https://gitlab.com/alfix/bsddialog/-/merge_requests/5 22 a call to curses' refresh() is performed, while a local 23 variable is also called refresh. 24 * Makefiles: add install and uninstall targets (both GND and BSD) 25 https://gitlab.com/alfix/bsddialog/-/merge_requests/3 26 27 MacOS (tested on amd64) refactoring, no function changes: 28 * https://gitlab.com/alfix/bsddialog/-/merge_requests/6 29 utility: replace u_int with unsigned int. 30 31 Library: 32 * fix: useless refreshes, https://gitlab.com/alfix/bsddialog/-/issues/8: 33 "It takes lot of time when running over a 115200 UART". 34 Not fixed for bsddialog_gauge() because it has to be rewritten. 35 * change: bsddialog_backtitle() does not update the screen so the 36 backtitle is not printed. To use if a dialog is built later. 37 Rationale: see "115200 UART" problem above. 38 * add: bsddialog_backtitle_rf() to print a top title refreshing the 39 screen like bsddialog_backtitle() was previously. 40 * change: forms, ENTER is also a navigation keys in forms fields. 41 Request: https://bugs.freebsd.org/287592 42 If conf.button.always_active is true the form is closes immediatly. 43 44 Library and implicitly utility: 45 * fix: textbox buttons returned values (was always OK). 46 Thanks to https://reviews.freebsd.org/D48668. 47 * change: TAB is a navigation keys in forms. Previously it directly 48 switched form-fields <-> buttons. 49 Request: https://bugs.freebsd.org/287592 50 51 Utility: 52 * change: forms, ENTER is a also navigation keys in forms fields. 53 Previously it directly closed the form except with --switch-buttons 54 Request: https://bugs.freebsd.org/287592 55 56 572024-07-01 Version 1.0.4 58 59 Utility internal refactoring (no functional change): 60 * change: rename an internal constant to avoid a future conflict 61 because FreeBSD is changing headers files for _FORTIFY_SOURCE. 62 Reported and fixed by Kyle Evans. 63 642024-05-27 Version 1.0.3 65 66 Utility: 67 change: --form and --mixedform do not print field value to output fd if 68 <fieldlen> is <= 0 (readonly). To note --mixedgauge continues 69 to print field value if <flag> = 2 (readonly) unless <fieldlen> 70 is <= 0 (as described previously). 71 72 732024-04-11 Version 1.0.2 74 75 Utility: 76 improvements and changes for --form and --mixedform: 77 * add: <maxletters> 0 sets <maxletters> like <fieldlen>. 78 * add: <fieldlen> 0 sets <fieldlen> like <init> width and readonly. 79 * change: <maxletters> 0 was an error (remains error in lib). 80 * change: <fieldlen> 0 was an error (remains error in lib) 81 (<fieldlen> 0 and <init> "" is still an error.). 82 83 Library and implicitly utility: 84 * add: Ctrl-l to redraw dialog. 85 Request stable@freebsd.org January 2024. 86 * add: -, +, Ctrl-p, Ctrl-n for several dialogs. 87 +, - request for menus, private feature request. 88 Ctrl-p, Ctrl-n for menu, request hackers@freebsd.org February 2024. 89 * fix: escaped text ending with an escape symbol. 90 * change: truncate mixedgauge long (over the screen/minibars) 91 minilabels adding "...". As a result, avoid check-size error. 92 https://gitlab.com/alfix/bsddialog/-/issues/6. 93 * change: invert UP/DOWN keys to set a rangebox value. 94 95 962023-11-16 Version 1.0.1 97 98 Library Internal Refactoring: 99 * add: arrow macro handlers. 100 * change: Box-drawing characters, from utf8 to wide chars to avoid to 101 handle "env NCURSES_NO_UTF8_ACS=1". 102 Request https://bugs.freebsd.org/274472, 103 Rationale https://reviews.freebsd.org/D42380. 104 1052023-08-01 Version 1.0 106 107 Utility: 108 * add: comments to --save-theme output file. 109 * add: blink, halfbright, highlight to --save-theme and --load-theme. 110 * add: theme.menu.[f_]prefixcolor to --save-theme and --load-theme. 111 * add: --datebox-format <d/m/y|m/d/y|y/m/d> to set --datebox UI. 112 * add: --help-print-items (--help-status becomes alias). 113 * add: --text-escape (--colors becomes alias). 114 * add: new escapes \Zd, \Zk, \Zs, \ZD, \ZK, \ZS, for --text-escape. 115 * add: env NO_COLOR, to set blackwhite theme. 116 * add: $HOME/.bsddialog.conf startup theme file. 117 * add: env BSDDIALOG_THEMEFILE startup theme file. 118 * add: --left1-button <label>. 119 * add: --left2-button <label>. 120 * add: --left3-button <label>. 121 * add: --right1-button <label>. 122 * add: --right2-button <label>. 123 * add: --right3-button <label>. 124 * add: dynamic exit codes. 125 - add: --error-exit-code. 126 - add: --ok-exit-code. 127 - add: --cancel-exit-code. 128 - add: --help-exit-code. 129 - add: --extra-exit-code. 130 - add: --timeout-exit-code. 131 - add: --esc-exit-code. 132 - add: --left1-exit-code. 133 - add: --left2-exit-code. 134 - add: --left3-exit-code. 135 - add: --right1-exit-code. 136 - add: --right2-exit-code. 137 - add: --right3-exit-code. 138 - add: env BSDDIALOG_ERROR. 139 - add: env BSDDIALOG_OK. 140 - add: env BSDDIALOG_CANCEL. 141 - add: env BSDDIALOG_HELP. 142 - add: env BSDDIALOG_EXTRA. 143 - add: env BSDDIALOG_TIMEOUT. 144 - add: env BSDDIALOG_ESC. 145 - add: env BSDDIALOG_LEFT1. 146 - add: env BSDDIALOG_LEFT2. 147 - add: env BSDDIALOG_LEFT3. 148 - add: env BSDDIALOG_RIGHT1. 149 - add: env BSDDIALOG_RIGHT2. 150 - add: env BSDDIALOG_RIGHT3. 151 * add: undocumented envs for bsdconfig(8) compatibility. 152 - env BSDDIALOG_COMPATRC for use_shadow setting. 153 - env BSDDIALOG_ITEM_HELP to add/set exit code. 154 * change: rename themes --theme <3d|blackwhite|flat>. 155 * change: --no-names and --no-descriptions mutually exclusive (via lia). 156 * change: quote only checklist output items if necessary. Previously 157 also radiolist item. 158 * change: dialogs with user input print always values except with ERROR, 159 ESC, Cancel. Previously the situation was quite heterogeneous. 160 * improve: DIAGNOSTIC messages adding fmt string errors. 161 * improve: disable theme setting (opt and env) with no-color terminals. 162 * improve: menus on|off status (strcasecmp, diagnostic, real off check). 163 * improve: --bikeshed with button delimiter and --date-format. 164 * improve: --textbox accepts button options. 165 * improve: Forms with Help button. 166 - print "HELP" (like menus). 167 - accept --help-list-items. 168 - accept --help-print-name. 169 * fix: --load-theme attributes. 170 * fix: --clear-screen with --and-dialog. 171 * delete: --theme <bsddialog> (partially implemented). 172 * delete: --esc-return-cancel (replaced by new env and option). 173 * delete: --generic-button1 (replaced by --right1-button). 174 * delete: --generic-button2 (replaced by --right2-button). 175 * refactor: modularize in more files (main, cli, builders, theme). 176 177 Library: 178 * add: bsddialog_inmode(). 179 * add: bsddialog_clear(y) for utility --clear-screen. 180 * add: bsddialog_refresh() for utility terminal mode options. 181 * add: conf.date.format="d/m/y"|"m/d/y"|"y/m/d" to customize 182 bsddialog_datebox() UI (boxes) with a date format. 183 * add: 'const char *end' to bsddialog_gauge(). 184 * add: draw focus on the shortcut-key-selected button at exit. 185 * add: escapes for conf.text.highlight \Zd, \Zk, \Zs, \ZD, \ZK, \ZS. 186 * add: other theme flags. 187 - BSDDIALOG_BLINK. 188 - BSDDIALOG_HALFBRIGHT. 189 - BSDDIALOG_HIGHLIGHT. 190 * add: generic buttons. 191 - conf.button.left1_label, BSDDIALOG_LEFT1 return value. 192 - conf.button.left2_label, BSDDIALOG_LEFT2 return value. 193 - conf.button.left3_label, BSDDIALOG_LEFT3 return value. 194 - conf.button.right1.label, BSDDIALOG_RIGHT1 return value. 195 - conf.button.right2.label, BSDDIALOG_RIGHT2 return value. 196 - conf.button.right3.label, BSDDIALOG_RIGHT3 return value. 197 * add: unused bsddialog_menugroup.min_on for future features. 198 * add: theme.menu.f_prefixcolor and theme.menu.prefixcolor. 199 * improve: check (when possible) API pointers. 200 * improve: circolar buttons with left and right keys for msgbox, yesno, 201 menus, rangebox and pause. 202 * improve: bsddialog_textbox() handles conf.buttons. 203 * improve: bsddialog_datebox() a box change affects the others as well. 204 * improve: bsddialog_geterror() with fmt strings. 205 * change: API NULL strings handled like "", except gauge *sep and *end. 206 * change: menus and form less restrictive with text, hide text with 207 little screens (same behavior as other dialogs). 208 * change: mixedgauge BSDDIALOG_MG_BLANK does not draw minibar but prints 209 minilabel. The change allows mixedgauge to add sections. To restore 210 the previous behavior setting minilabel to "". 211 * change: check/set bsddialog_gauge() perc max 100. 212 * change: check/set bsddialog_mixedgauge() mainperc max 100. 213 * change: conf.menu.no_name and conf.menu.no_desc mutually exclusive. 214 * change: bsddialog_pause() sec -> *sec to know remaining time at exit. 215 * change: add *focusitem to bsddialog_form() like menus. 216 * change: "pointer" values are always set except when BSDDIALOG_ERROR 217 occurs. Examples *yy/*mm/*ss, rangebox *value. 218 - delete conf.menu.on_without_ok. 219 - delete conf.form.value_without_ok. 220 * rename: conf.text.highlight -> conf.text.escape. 221 * rename: theme.menu.namesepcolor -> theme.menu.sepnamecolor. 222 * rename: theme.menu.descsepcolor -> theme.menu.sepdesccolor. 223 * fix: bsddialog_pause() elevation bar after resize. 224 * fix: bsddialog_textbox() key '0'. 225 * fix: timebox.c checksize (boxes width). 226 * fix: extend menurows after shrink and enlarge. 227 * fix: menu pad and form pad "re-expansion" after shrink and enlarge. 228 * fix: shadow top-left corner (trick wresize() before wmove()). 229 * fix: increment bsddialog_total_progview size for more general use. 230 * delete: BSDDIALOG_THEME_BSDDIALOG (partially implemented). 231 * delete: conf.button.generic1_label (for new conf.button.right1_label). 232 * delete: BSDDIALOG_GENERIC1 return value (new BSDDIALOG_RIGHT1). 233 * delete: conf.button.generic2_label (for new conf.button.right2_label). 234 * delete: BSDDIALOG_GENERIC2 return value (new BSDDIALOG_RIGHT2). 235 * delete: bsddialog_clearterminal(), replaced by bsddialog_clear(y). 236 * refactor: internal implementation. 237 - add: internal structures to represent components. 238 - merge: (when possible) dialogs autosize. 239 - merge: (when possible) dialogs checksize. 240 - merge: for each dialog "build" with "update" -> <dialog>_redraw(). 241 - merge: new_dialog() with update_dialog() -> draw_dialog(). 242 - merge: infobox.c with messagebox.c (delete infobox.c) 243 - merge: bsddialog_datebox() + bsddialog_calendar() -> datebox.c 244 - change: flat and blackwhite real themes, 3d adapted from flat. 245 - improve: replace wrefresh() -> wnoutrefresh()/doupdate(). 246 - improve: replace prefresh() -> pnoutrefresh()/doupdate(). 247 - improve: menu split code to build private items. 248 - improve: form split code to build private items. 249 - delete: -Wno-implicit-fallthrough. 250 251 2522023-06-12 Version 0.4.2 253 254 Library: 255 * fix: compile error with aarch64-gcc12 for "\Z[0-7]" check; 256 https://gitlab.com/alfix/bsddialog/-/issues/5. 257 * fix: BSDDIALOG_FIELDCURSOREND with multiple items 258 (warning aarch64-gcc12). 259 260 2612023-01-02 Version 0.4.1 262 263 Utility: 264 * fix: default space separator menus output, except if --separator " ". 265 * rename: GNUMakefile to GNUmakefile to simplify linux build. 266 Thanks to https://gitlab.com/alfix/bsddialog/-/merge_requests/2. 267 268 Library: 269 * fix: t.dialog.linelowercolor no bold-black, some terminal draws grey. 270 * fix: text wrapping (actual string length) with --colors. 271 * rename: GNUMakefile to GNUmakefile to simplify linux build. 272 Thanks to https://gitlab.com/alfix/bsddialog/-/merge_requests/2. 273 274 2752022-09-24 Version 0.4 276 277 Utility: 278 * add: --normal-screen to set normal mode. 279 * add: --alternate-screen to set alternate mode. 280 * add: --keep-tite as --alternate-screen alias. 281 * add: --and-dialog to build other dialogs. 282 * add: --and-widget as --and-dialog alias. 283 * add: --no-names (--no-tags becomes alias). 284 * add: --no-descriptions (--no-items becomes alias). 285 * add: --help-print-name (--help-tags becomes alias). 286 * add: --item-bottom-desc (--item-help becomes alias). 287 * add: --cr-wrap (was partially implemented) to keep '\n' with "\n". 288 * add: --text-unchanged to avoid default modification. 289 * add: --tab-escape to enable "\t" in text. 290 * add: --clear-screen to clear the screen. 291 * add: --clear-dialog to clear the dialog (was --clear). 292 * add: --calendar dialog to select a date. 293 * add: DIAGNOSTICS messages for bad arguments number. 294 * add: DIAGNOSTICS messages for missing and unexpected options. 295 * change: --clear becomes alias for --clear-screen. 296 * change: --print-maxsize format output. 297 * change: --menu, --radiolist, --checklist and --treeview output. 298 - no printed items with Cancel or ESC. 299 - --separator prints <sepstr> before each item except HELP. 300 - --separator and --separate-output print <sepstr> after each item. 301 - quoted item name/desc only when needed. 302 - --menu avoids to print selected item after focused HELP item. 303 * change: text default modification. 304 - without a "\n": '\t' -> space, '\n' -> '\n', trim spaces. 305 - with a "\n": '\t' -> space, '\n' -> space, "\n" -> '\n', no trim. 306 - delete '\n' after "\n" (also with --cr-wrap). 307 * change: --datebox input and output format yy/mm/dd -> dd/mm/yy. 308 * delete: --no-collapse (partially implemented). 309 * delete: --no-nl-expand (partially implemented). 310 * delete: --trim (partially implemented). 311 312 Library: 313 * add: bsddialog_msgbox() HOME, END, PPAGE and NPAGE keys. 314 * add: bsddialog_yesno() HOME, END, PPAGE and NPAGE keys. 315 * add: bsddialog_menu() SPACE key (equivalent to ENTER). 316 * add: bsddialog_calendar() to select a date. 317 * change: rename enum bsddialog_grouptype -> enum bsddialog_menutype. 318 * change: fixed-menurows becomes at most menurows (depending on text). 319 * change: fixed-rows becomes at most rows, min(rows, screenH - shadow). 320 * change: fixed-cols becomes at most cols, min(cols, screenW - shadow). 321 * delete: undocumented internal bsddialog_menuitem.depth factor (was 2). 322 323 3242022-08-29 Version 0.3 325 326 Utility: 327 * add: --textbox accepts options for the first button. 328 * add: --columns-per-row for text autosizing. 329 * add: --load-theme to read and set a custom theme at runtime. 330 * add: --save-theme to save current theme. 331 * add: --bikeshed for random settings. 332 * add: --switch-buttons to enable buttons/input widgets focus switching. 333 Available for: --form, --inputbox, --mixedform, --passwordform, 334 --passwordbox, --timebox and --datebox. 335 * change: rename --esc-cancelvalue to --esc-return-cancel. 336 * change: form field value is printed like multibyte charachter string, 337 previously widechar string. 338 * change: --timebox output with zero padding. 339 * change: --datebox output mm and dd with zero padding. 340 * fix: --hline with empty string. 341 * fix: avoid to overlay the backtitle by setting a top margin. 342 * fix: avoid to overlay down shadow with menus and forms bottomdesc 343 by setting a down margin. 344 * fix: --form read-only flag with multiple fields. 345 346 Library: 347 * add: conf.auto_topmargin and conf.auto_downmargin. 348 * add: bsddialog_textbox() accepts conf.button.* for the first button. 349 * add: bsddialog_textbox() arrows and percentage. 350 * add: conf.text.cols_per_row to set a ratio for text autosizing. 351 * add: timebox and datebox arrows and focus background for boxes. 352 * add: timebox and datebox UP key to switch focus. 353 * add: bsddialog_init_notheme() in bsddialog.h. 354 * add: bsddialog_hascolors() in bsddialog_theme.h. 355 * add: theme.form.bottomdesccolor and theme.menu.bottomdesccolor. 356 * add: conf.button.always_active to disable buttons/input-boxes switch. 357 * add: dynamic buttons margin. 358 - add: theme.button.minmargin and theme.button.maxmargin. 359 - delete: theme.button.hmargin. 360 * add: Unicode. 361 - UI handles multicolumn charachters: backtitle, title, 362 text (word wrapping, autosizing), menus (shortcuts, name, desc), 363 forms (label, field), textbox, mixedgauge (minilabel), 364 buttons (label, shortcuts), bottomtitle. 365 - API handles char* arguments like multibyte charachter string, 366 depending on the current locale. 367 - Internally wide charachters are used to get input from keyboard 368 and to adapt word wrapping and dynamic text autosizing to 369 muticolumn charachters. 370 * refactoring: (rewrite) form.c. 371 - delete: libformw dep implementing its features from scratch. 372 - delete: maxvaluelen >= valuelen constraint. 373 - delete: conf.form.enable_wchar, get always unicode (wchar) input. 374 - add: KEY_HOME, KEY_END, KEY_PPAGE, KEY_NPAGE keys in field. 375 - add: KEY_UP can move focus from buttons to fields. 376 - add: KEY_DOWN can move focus from item to buttons, if nitem is 1. 377 - add: conf.form.securembch secure multibyte charachter. 378 - add: BSDDIALOG_FIELDNOCOLOR for formitem.flags. 379 - add: BSDDIALOG_FIELDCURSOREND for formitem.flags. 380 - add: BSDDIALOG_FIELDEXTEND for formitem.flags. 381 - add: BSDDIALOG_FIELDSINGLEBYTE for formitem.flags. 382 - add: resizing and refresh after KEY_RESIZE (SIGWINCH). 383 - add: items scrolling. 384 - add: conf.form.value_wchar, value is wchar_t* instead of MB-char*. 385 - add: formheight autosizing. 386 - add: dynamic item position. 387 * fix: bsddialog_gauge() with fd < 0. 388 * fix: bsddialog_gauge() refresh new text. 389 * fix: internal segmentation fault with disabled shadow. 390 * fix: center position without shadow. 391 * fix: bsddialog_infobox() with zero text length. 392 * fix: text wrapping with more than 1024 words. 393 * fix: rename theme.shadow.h to theme.shadow.y. 394 * fix: rename theme.shadow.w to theme.shadow.x. 395 * fix: menurows autosize with fixed rows improving text_size(). 396 * fix: messagebox.c scrolling and checksize without text. 397 398 3992022-03-02 Version 0.2 400 401 Utility: 402 * add: (this) CHANGELOG. 403 * add: "menus" print item with focus (except with OK and ERROR). 404 * add: pause.sh example. 405 * add: timebox.sh example. 406 * change: --theme name "default" -> "flat". 407 * delete: treeview.sh example. 408 * fix: --separate-output does not quote (except with --quoted). 409 * fix: --datebox and --date-format month in output. 410 * improve: examples handle exit status. 411 412 Library: 413 * add: conf.form.enable_wchar for wide characters in bsddialog_form(). 414 * add: theme.menu.f_selectorcolor. 415 * add: formw.c example. 416 * change: move conf.f1_file and conf.f1_message in conf.key. 417 * change: theme.button.[left|right]ch -> theme.button.[left|right]delim. 418 * change: theme.button.space -> theme.button.hmargin. 419 * change: theme.menu.arrowcolor -> theme.dialog.arrowcolor. 420 * change: internal bsddialog_menuitem.depth factor 4 -> 2. 421 * fix: disable HOME, PPAGE, END and NPAGE keys in bsddialog_form(). 422 * fix: visible cursor for timebox.c and form.c in VM VirtualBox. 423 * fix: mixedlist, center position of separator with big pad. 424 * fix: timebox and datebox set values only with BSDDIALOG_OK. 425 * fix: menurows autosize with fullscreen. 426 * fix: bar color with 0%. 427 * fix: bar label position. 428 * improve: timebox and datebox navigation (keys, buttons and shortcuts). 429 * improve: "menus" colors for accessibility. 430 431 4322022-01-27 Version 0.1 433 434 * Options: --ascii-lines, --backtitle <backtitle>, --begin-x <x>, 435 --begin-y <y>, --cancel-label <label>, --clear, --colors, --cr-wrap, 436 --date-format <format>, --defaultno, --default-button <label>, 437 --default-no, --default-item <name>, --disable-esc, 438 --esc-cancelvalue, --exit-label <label>, --extra-button, 439 --extra-label <label>, --generic-button1 <label>, 440 --generic-button2 <label>, --help, --help-button, 441 --help-label <label>, --help-status, --help-tags, 442 --hfile <filename>, --hline <string>, --hmsg <string>, --ignore, 443 --insecure, --item-depth, --item-help, --items-prefix, 444 --max-input <size>, --no-cancel, --nocancel, --no-collapse, 445 --no-items, --no-label <label>, --no-lines, --no-nl-expand, 446 --no-ok, --nook, --no-shadow, --no-tags, --ok-label <label>, 447 --output-fd <fd>, --output-separator <sep>, --print-maxsize, 448 --print-size, --print-version, --quoted, --separate-output, 449 --separator <sep>, --shadow, --single-quoted, --sleep <secs>, 450 --stderr, --stdout, --tab-len <spaces>, 451 --theme <blackwhite|bsddialog|default|dialog>, 452 --time-format <format>, --title <title>, --trim, --version, 453 --yes-label <label>. 454 * Dialogs: --checklist, --datebox, --form, --gauge, --infobox, 455 --inputbox, --menu, --mixedform, --mixedgauge, --msgbox, 456 --passwordbox, --passwordform, --pause, --radiolist, --rangebox, 457 --textbox, --timebox, --treeview, --yesno. 458 * Manuals: bsddialog.1, bsddialog.3. 459