C-Menu 0.2.9
A User Interface Toolkit
Loading...
Searching...
No Matches
CHANGELOG

C-Menu-0.2.9

2026-10-07T16:51:34-05:00 - DOCUMENTATION UPDATES

2026-10-07T15:37:37-05:00 - Update CHANGELOG.md

2026-10-07T15:32:44-05:00 - FIX: Intermittent failure to identify chyron zone. The fix was to initialize chyron->y in display_chyron() so that it always gets set to the correct value before being used in get_event(). Also cleaned up a number of issues with Internationalization (i18n) support.

2026-10-06T22:37:15-05:00 - Update CHANGELOG.md

2026-10-06T22:36:53-05:00 - DOCUMENTATION UPDATES

2026-10-06T16:58:35-05:00 - Update CHANGELOG.md

2026-10-06T16:58:13-05:00 - DOCUMENTATION UPDATES: manual pages

2026-10-06T16:16:16-05:00 - Update CHANGELOG.md

2026-10-06T16:08:20-05:00 - FIX: Mouse movement reporting creates a constant stream of events, which we will use to implement hover functions, but until then, we will disable mouse movement reporting. Everything else, button clicks, scroll wheels, etc still work as before. This is a just a temporary fix until we implement hover functions.

2026-10-06T15:30:27-05:00 - Update CHANGELOG.md

2026-10-06T15:28:27-05:00 - FIXES: input countdown timer revisions after first round of testing. Appears to be working correctly for both NCurses and Notcurses backends.

2026-10-06T10:53:34-05:00 - Update CHANGELOG.md

2026-10-06T10:49:51-05:00 - FEATURE: Add "-Z" timeout_secs to command line options and implemented pop-up countdown timer.

2026-10-05T17:13:52-05:00 - Update CHANGELOG.md

2026-10-05T17:08:48-05:00 - FEATURE UPGRADE: Added file ready polling to get_event() with count-down timer. This will be useful for viewing data from a slow network connection or device.

2026-10-04T23:06:45-05:00 - Update CHANGELOG.md

2026-10-04T23:04:59-05:00 - FIX: init_view.c corrected minor issue in transferring file from standard input.

2026-10-04T18:30:28-05:00 - FEATURE PREPARATION: Laying groundwork for future features. This commit includes modifications that will facilitate the implementation of upcoming features including improved handling of piped input for view.

2026-10-03T18:26:56-05:00 - Update CHANGELOG.md

2026-10-03T18:23:34-05:00 - FIXES: view_engine.c: file positioning had several issues which prevented go_to_line, go_to_percent, and go_to_position from functioning correctly. Added two new functions, sync_pos, and sync_ln to replace the old sync_ln. Initial tests indicate that these functions are working correctly.

2026-10-02T09:57:04-05:00 - Update CHANGELOG.md

2026-10-02T09:56:50-05:00 - DOCUMENTATION UPDATES

2026-10-02T05:29:35-05:00 - Update CHANGELOG.md

2026-10-02T05:29:09-05:00 - DOCUMENTATION UPDATES

2026-10-01T17:14:42-05:00 - Update CHANGELOG.md

2026-10-01T17:12:38-05:00 - DOCUMENTATION UAL_UI, and internationalization (i18n) and localization (l10n)

2026-10-01T09:58:29-05:00 - Update CHANGELOG.md

2026-10-01T09:58:03-05:00 - DOCUMENTATION UPDATES lf, C-Menu-CLI

2026-09-30T23:39:45-05:00 - Update CHANGELOG.md

2026-09-30T23:39:02-05:00 - FIXES: Internationalization (i18n) (l10n)

2026-09-30T14:25:11-05:00 - Update CHANGELOG.md

2026-09-30T14:19:49-05:00 - FEATURE: Internationalization (i18n) support for C-Menu. Localization (l10n) support for C-Menu. Multiple language translations will be integrated into C-Menu as the translations are completed.

2026-09-28T11:02:22-05:00 - Update CHANGELOG.md

2026-09-28T10:57:24-05:00 - FIX: the clangd language server depends on compile_commands.json, which is generated by cmake. Added an error message to chkui that is triggered if compile_commands.json is not found in the current directory.

2026-09-28T10:49:40-05:00 - Update CHANGELOG.md

2026-09-28T10:46:48-05:00 - FIXES: One of the previous commits resulted in a call to def_prog_mode(), which had not yet been defined for notcurses. Also began work on internationalization of the UI, but this is not yet complete.

2026-09-27T12:54:02-05:00 - Update CHANGELOG.md

2026-09-27T12:48:00-05:00 - FIX: get_cmd_arg in view_engine.c: Symptom: enter '/' on the command line to invoke the search command, then pressing F9 (or some other combination of keystrokes) would produce undefined results. Cause: cm_accept_field was replacing the specified window, in this case CMDLN, with WIN. Resolution: pass the specified window to get_event.

2026-09-26T22:53:17-05:00 - Update CHANGELOG.md

2026-09-26T22:53:08-05:00 - DOCUMENTATION UPDATES

2026-09-26T17:46:22-05:00 - Update CHANGELOG.md

2026-09-26T17:43:56-05:00 - FEATURE UPGRADE: Cycle Detection, virtual memory arena, unlimited directories, ring buffer, and more. What's next? io_uring? Now, that would be a Bobby Dazzler!

2026-09-26T16:27:09-05:00 - Update CHANGELOG.md

2026-09-26T16:17:21-05:00 - FEATURE UPDATE: Refactored lf cycle detection to support a virtually unlimited number of directories, using a virtual memory arena. Tested with Valgrind, which reported no memory leaks are possible, and -fsanitize=thread. And, it's scorchingly fast. The cycle detection algorithm is now O(n) in time and O(n) in space, where n is the number of directories. This is a significant improvement over the previous implementation, which was O(n^2) in time and O(n^2) in space. 10x faster than find, and even faster than fd, and that's not because of missing features. lf has a rich set of features. See lf.md for details.

2026-09-25T14:43:38-05:00 - Update CHANGELOG.md

2026-09-25T14:42:51-05:00 - EXPERIMENTAL: working through issues with thread contention

2026-09-25T08:02:01-05:00 - Update CHANGELOG.md

2026-09-25T07:59:41-05:00 - FIXES: Corrected issue in view to make go_to_line work properly.

2026-09-24T20:42:47-05:00 - Update CHANGELOG.md

2026-09-24T19:39:44-05:00 - FIXES and REFINEMENTS: lf.c CYCLIC DETECTION, MEMORY MANAGEMENT and ERROR DETECTION. CYCLE DETECTION was added with no measurable performance penalty. lf is already obscenely fast, but we still have a few tricks up our sleeves to make it even faster after we let the dust settle. I started to write this project in Rust. It's new and exciting, and has great modern features that I like a lot. It also has a great community of forward thinkers around it. There were a couple of issues that didn't meet my design objectives. One was portability. Almost every platform provides tools for C development, but many don't have Rust. The big one was the size of executables and libraries. I have no intention of recreating the Vasa (previously Wasa), a Swedish warship that sank in 1628. C-Menu had to be compact enough to send into deep space on a slow connection. What I have learned in the past few months has revived my enthusiasm for C. I now understand where Linus is coming from. C is simple, fast, and portable. It seems the only thing that has held C back is people like me who have been seduced by the new and shiny. But I"m back, I understand the brilliance that went into the design of C. It is still there, and it is still relevant. With C, the limit is your resourcefulness. <em>2026-09-24T11:49:32-05:00</em> - Update CHANGELOG.md <em>2026-09-24T11:49:21-05:00</em> - DOCUMENTATION UPDATE: lf <em>2026-09-24T11:46:04-05:00</em> - Update CHANGELOG.md <em>2026-09-24T11:45:44-05:00</em> - DOCUMENTATION UPDATE: lf help screenshot added <em>2026-09-24T11:28:02-05:00</em> - FIXED minor error in lf_tests.sh <em>2026-09-24T10:52:31-05:00</em> - Update CHANGELOG.md <em>2026-09-24T10:32:31-05:00</em> - FEATURES: lf (lightweight file finder)- Refactored CYCLIC DETECTION with a simpler and faster algorithm. Added "-E" option to specify error output file. Added "9 - report error count" argument to "-D" option, so lf only reports the number of errors if "-D9" is specified. lf is now fully concurrent and very fast. 10x faster than find, and even faster than fd. <em>2026-09-22T11:28:52-05:00</em> - Update CHANGELOG.md <em>2026-09-22T11:28:21-05:00</em> - DOCUMENTATION UPDATE <em>2026-09-21T17:54:19-05:00</em> - Update CHANGELOG.md <em>2026-09-21T17:53:50-05:00</em> - EXPERIMENTAL DEVELOPMENT: Adding batch queueing to lf.c <em>2026-09-20T20:16:30-05:00</em> - Update CHANGELOG.md <em>2026-09-20T19:42:08-05:00</em> - EXPERIMENTAL DEVELOPMENT: A bulk enqueueing facility is being added to lf5.c to see if that might raise its performance to an even more ridiculous level. lf is already the fastest file finder in existence, having surpassed fd, but I am convinced it can be made even faster. It's not that it needs to be, but as an academic exercise in MPMC ring buffer queue performance. If my benchmark numbers seem exaggerated, it's because I have an Intel Optane SSD. Its 10 ns latency is a huge advantage over the 100-200 ns latency of a typical NVMe SSD. The 10x lower latency of the Optane SSD allows it to handle many more small file operations in parallel, which is exactly what a file finder does. So, you probably won't get benchmark numbers like mine unless you have an Optane SSD. Of course, you could get even better benchmarks by running the tests on a RAM disk. It's unfortunate that Intel stopped making the Optane drives. There is currently nothing on the market that can replace it for low latency mass storage. I suspect that the Optane had something to do with the exclusion of latency statistics in many benchmarking programs. Nothing else could approach the Optane's low latency, so it was probably considered unfair to include it in benchmarks. I have a feeling that the Optane was a victim of Intel's marketing department, which is more concerned with selling high margin NVMe drives than low margin Optane drives. The Optane was a niche product that Intel probably didn't want to support, so they killed it off. It's a shame, because the Optane was a great product that filled a niche that no other product could fill. RIP Optane. <em>2026-09-19T21:38:47-05:00</em> - Update CHANGELOG.md <em>2026-09-19T21:34:55-05:00</em> - FIXES: After exiting from the shell invoked by the Menu selection, Full Screen Root Shell, a core dump occurred. This was due to the abstraction layer calling ui_shutdown() instead of NCurses endwin() directly. <em>2026-09-19T21:18:17-05:00</em> - Update CHANGELOG.md <em>2026-09-19T21:17:36-05:00</em> - FIXES: Various clean-up chores and a few bug fixes. <em>2026-09-18T10:16:54-05:00</em> - Update CHANGELOG.md <em>2026-09-18T10:16:34-05:00</em> - DOCUMENTATION UPDATES: Readme.md <em>2026-09-17T19:41:03-05:00</em> - Update CHANGELOG.md <em>2026-09-17T19:40:20-05:00</em> - FIXES: Same problem with Notcurses input handling as in the previous commit. The input handling was not properly integrated with the rest of the UI, leading to unexpected behavior when processing user input. This commit addresses those issues by refactoring the input handling code and ensuring it works seamlessly with the Notcurses library. <em>2026-09-17T19:12:32-05:00</em> - Update CHANGELOG.md <em>2026-09-17T19:05:07-05:00</em> - FIXES: NCurses mouse functioning was broken while refactoring the Event and Chyron data structures. This commit restores that mouse functionality. We are continuing to test and debug C-Menu after adding the Uniform Abstraction Layer. This is to be expected after changing thousands of lines of code. The codebase has become much easier to maintain because of the refactoring, and we are confident that we will be able to fix the remaining issues in a timely manner. <em>2026-09-17T17:33:21-05:00</em> - Update CHANGELOG.md <em>2026-09-17T17:32:19-05:00</em> - FIX: Accidentally put external references to error messages in notcurses section of include/ui_backend.h. Moved it to the common area. <em>2026-09-17T17:27:56-05:00</em> - Update CHANGELOG.md <em>2026-09-17T17:25:50-05:00</em> - FIXES: Added strerror__r(), a safer version of strerror() that uses a static buffer to store the error message. This function is used in C-Menu to provide error messages in a thread-safe manner. And other error handling improvements. <em>2026-09-17T13:07:59-05:00</em> - Update CHANGELOG.md <em>2026-09-17T13:07:23-05:00</em> - DOCUMENTATION UPDATE: Screenshots and README.md <em>2026-09-16T22:20:25-05:00</em> - Update CHANGELOG.md <em>2026-09-16T22:18:10-05:00</em> - DOCUMENTATION: Test scripts, src/lf_tests.sh and src/lf_T.sh updated. docs/Performance.md updated. <em>2026-09-16T21:13:36-05:00</em> - Update CHANGELOG.md <em>2026-09-16T21:05:39-05:00</em> - FIXES: When moving the selector bar, Pick was opening a new view window without closing the previous one. Subsequently selecting F9 to exit would close the new view window, but leave the previous one open, which was not the intended behavior. It has been modified to leave the window open, but not to open a new one when moving the selector bar. We still need to make sure the view window closes when transitioning from the text viewer to the image viewer and vice versa. That's the next step. <em>2026-09-16T17:15:37-05:00</em> - Update CHANGELOG.md <em>2026-09-16T17:15:22-05:00</em> - DOCUMENTATION: Minor changes <em>2026-09-16T16:37:10-05:00</em> - Update CHANGELOG.md <em>2026-09-16T16:28:54-05:00</em> - FIXES: In testing different directory trees, we found that lf4.c dropped large numbers of files on a large directory tree with many more directories than files. The solution was to extend the duty of the worker threads recursively instead of dropping files. There was an elapsed time penalty, bumping execution time from 0.08 to 0.14 seconds. fd completed in 0.15 seconds, and find in 0.86 seconds. So, lf is much faster than it was, the file count matches with fd and find. <em>2026-09-15T09:07:09-05:00</em> - Update CHANGELOG.md <em>2026-09-15T09:06:29-05:00</em> - CLEANUP: After lf EXPERIMENTAL: REMOVE lf2, lf3, lf4, lf5, and lf_notes.txt <em>2026-09-15T08:29:29-05:00</em> - Update CHANGELOG.md <em>2026-09-15T08:21:10-05:00</em> - FIXES: view was scrolling past "end of data" (eod). The specification allows view to scroll one line past the last line of data on the first pass only. After that, view should be eod aware and not scroll past it. <em>2026-09-15T06:30:56-05:00</em> - Update CHANGELOG.md <em>2026-09-15T06:30:35-05:00</em> - DOCUMENTATION UPDATE: PERFORMANCE.md <em>2026-09-14T20:32:03-05:00</em> - Update CHANGELOG.md <em>2026-09-14T20:31:08-05:00</em> - FIXES: view.c was allowing KEY_DOWN scroll to go beyond the last line of the file. This was causing the view to display a blank line at the bottom of the screen when scrolling down past the last line of the file. The fix was to add a check in view.c to prevent scrolling down past the last line of the file. <em>2026-09-14T10:24:41-05:00</em> - Update CHANGELOG.md <em>2026-09-14T10:22:44-05:00</em> - EXPERIMENTAL: finalizing lf4.c before moving on to lf5.c. <em>2026-09-13T20:50:32-05:00</em> - Update CHANGELOG.md <em>2026-09-13T20:49:23-05:00</em> - EXPERIMENTAL: lf_tests.sh Test script for testing and comparing lf4.c <em>2026-09-13T19:42:00-05:00</em> - Update CHANGELOG.md <em>2026-09-13T19:41:33-05:00</em> - EXPERIMENTAL: lf4.c more cleanup work before moving to lf5.c <em>2026-09-13T17:51:33-05:00</em> - Update CHANGELOG.md <em>2026-09-13T17:30:35-05:00</em> - EXPERIMENTAL: lf4.c is an improved version of lf.c. lf4 uses a newly implemented lock-free ring buffer queue to serve its thread pool, and the results are significant. The test script, lf_tests.sh, has been updated to compare the output and performance with two formidable competitors, find and fd. While find is a single-threaded program, it is the gold standard for file searching, and fd is a multi-threaded program written in Rust that is known for it's reliability and incredible speed. The test set is a directory containing 517,847 files and the results are as follows: find 0.86 seconds, fd 0.15 seconds, and lf4 0.08 seconds. We still have some optimizations to make, and we expect to see even better, possibly dramatically better performance tomorrow. That possibly makes lf4 the fastest file searching program. C is truly the Bee's knees when it comes to raw performance. Winner, winner, chicken dinner. <em>2026-09-12T21:18:10-05:00</em> - Update CHANGELOG.md <em>2026-09-12T21:16:47-05:00</em> - EXPERIMENTAL: Add ring buffer and lock-free queue to lf4.c <em>2026-09-12T11:30:48-05:00</em> - Update CHANGELOG.md <em>2026-09-12T11:29:59-05:00</em> - EXPERIMENTAL: lf3.c lock-free implementation of lf2.c <em>2026-09-11T22:30:56-05:00</em> - Update CHANGELOG.md <em>2026-09-11T22:30:37-05:00</em> - EXPERIMENTAL: lf2.c ring buffer <em>2026-09-11T19:13:09-05:00</em> - Update CHANGELOG.md <em>2026-09-11T19:12:36-05:00</em> - EXPERIMENTAL: Work on ring buffer for lf2.c <em>2026-09-11T16:32:47-05:00</em> - Update CHANGELOG.md <em>2026-09-11T16:32:07-05:00</em> - EXPERIMENTAL: work on lf2 <em>2026-09-11T11:19:01-05:00</em> - Update CHANGELOG.md <em>2026-09-11T11:16:50-05:00</em> - FEATURE UPDATE: Abstraction Layer updates, lf2 experimental <em>2026-09-10T07:15:54-05:00</em> - Update CHANGELOG.md <em>2026-09-10T07:14:46-05:00</em> - SYNCHRONIZATION: Catch Notcurses up with NCurses updates <em>2026-09-10T07:10:42-05:00</em> - Update CHANGELOG.md <em>2026-09-10T06:45:34-05:00</em> - FEATURE ENHANCEMENT: When changes are made to one of the backends, the other backend must be updated so that the two backends function identically. Application code using the UAL_UI produces the same functionality and appearance regardless of the backend library used. One application codebase, with the same functions, the same data structures, and the same behavior, no exceptions, no excuses. The UAL_UI also includes many time-saving high-level abstractions for managing Unicode, UTF-8, cells, extended grapheme clusters, chyrons, ANSI SGR parsing, and more, while C-Menu handles Menus, Forms, Pickers, Viewers, and other UI elements. <em>2026-09-09T17:57:27-05:00</em> - Update CHANGELOG.md <em>2026-09-09T17:32:21-05:00</em> - HARDENING: Reorganized several things to make the code more robust and easier to maintain. I had been using 2 32 bit integers for wide characters because I wanted to make sure whatever was reading it would encounter a zero and stop reading. It is unnecessary because Notcurses had the foresight to add a guaranteed null terminator immediately after the wide character gcluster. I added a couple of macros and new functions that make it easier to satisfy the interface requirements for creating cchar_t cells (NCurses) and nccells (Notcurses). You can use same function call and the abstraction layer will take care of the rest. The idea is to completely eliminate the need for #ifdefs in your code, and we are very close to that goal. I have changed the names of the functions, getcchar and setcchar to ui_get_cell and ui_set_cell, and those functions work identically for both Notcurses and NCurses. The NCurses display output function calls, 19 of them, from waddch through mvwadd_wchnstr have been implemented for Notcurses. Only the legacy chtype functions have been omitted because they are problematic and obsolete. This commit addressed Notcurses issues and was built using Notcurses. That means the resulting NCurses incompatibilities have not yet been addressed. I will do that later today and commit the changes tonight. <em>2026-09-08T22:20:30-05:00</em> - Update CHANGELOG.md Merge: 7626ec1 103b610 <em>2026-09-08T22:20:17-05:00</em> - Merge branch 'main' of github.com:BillWaller/C-Menu <em>2026-09-08T22:09:06-05:00</em> - Update CHANGELOG.md <em>2026-09-08T21:53:30-05:00</em> - Update CHANGELOG.md <em>2026-09-08T21:41:06-05:00</em> - FIXES: Extensive testing and hardening of lf. Corrected problem when viewing "bat" highlighted files because Notcurses doesn't digest Unicode code points. Notcurses expects UTF-8 encoded strings, but "bat" prints Unicode code points for its line drawing characters. The abstraction layer has been modified to automatically convert Unicode code points to UTF-8 encoded strings before passing them to Notcurses. Merge: bc0e2c8 f49ce0f <em>2026-09-07T21:05:33-05:00</em> - Merge pull request #8 from BillWaller/copilot/update-lf-testing-script Enhancing lf_tests.sh for better testing outcomes <em>2026-09-08T01:31:22Z</em> - Finish lf hot path cleanup Co-authored-by: BillWaller <10166578+BillWaller@users.noreply.github.com> <em>2026-09-08T01:29:23Z</em> - Refactor lf scan hot path Co-authored-by: BillWaller <10166578+BillWaller@users.noreply.github.com> <em>2026-09-07T17:24:07-05:00</em> - Update CHANGELOG.md <em>2026-09-07T17:23:17-05:00</em> - FIXES: Testing and review of lf. Cleaning up a few things and adding some tests. <em>2026-09-07T09:38:40-05:00</em> - Update CHANGELOG.md <em>2026-09-07T09:38:05-05:00</em> - FIXES: Preemptive bug fixes in lf.c <em>2026-09-07T08:23:14-05:00</em> - Update CHANGELOG.md <em>2026-09-07T08:22:44-05:00</em> - FIXES: Corrected several issues with lf.c <em>2026-09-05T22:32:50-05:00</em> - Update CHANGELOG.md <em>2026-09-05T22:31:32-05:00</em> - FEATURE UPDATE: Added image of the hello program code and updated the README.md file. <em>2026-09-05T22:21:00-05:00</em> - Update CHANGELOG.md <em>2026-09-05T22:18:24-05:00</em> - FEATURE UPDATE: Example programs ui_hello.c and ui_visual.c have been updated to show how easy it is to create working programs that can use either NCurses or Notcurses by changing a single compile time flag. <em>2026-09-05T15:22:09-05:00</em> - Update CHANGELOG.md <em>2026-09-05T15:21:48-05:00</em> - DOCUMENTATION UPDATE: README.md <em>2026-09-05T15:14:24-05:00</em> - Update CHANGELOG.md <em>2026-09-05T15:13:30-05:00</em> - FEATURE UPDATE: Uniform Abstraction Layer (UAL) for UI Backends Minor tuning and example image display program <em>2026-09-05T11:00:28-05:00</em> - Update CHANGELOG.md <em>2026-09-05T10:59:52-05:00</em> - FIX: Cursor wasn't appearing on view command line. fixed. <em>2026-09-05T10:32:52-05:00</em> - Update CHANGELOG.md <em>2026-09-05T10:16:25-05:00</em> - FIXES: The UAL retrofit involved thousands of code lines. We are now reviewing, testing, and fixing. <em>2026-09-05T08:48:29-05:00</em> - Update CHANGELOG.md <em>2026-09-05T08:47:05-05:00</em> - FIXES: pick_engine: fixed several issues related to live view in pick <em>2026-09-05T06:42:20-05:00</em> - Update CHANGELOG.md <em>2026-09-05T06:36:57-05:00</em> - FIX: The line of code that set the pointer to the view structure was accidentally removed in the last commit. This caused a crash when trying to access the view structure. The line has been restored to fix the issue. <em>2026-09-04T22:48:42-05:00</em> - Update CHANGELOG.md <em>2026-09-04T22:42:42-05:00</em> - FEATURE UPDATE: Uniform Abstraction Layer for UI Backends Added JPEG, PNG, GIF, and WebP images to view. This is a Notcurses only feature. There is a way to hack NCurses to display images, but it is not the kind of code we turn out, and you wouldn't like it. Next, we will be adding video and audio. So you could use C-Menu to develop players for your video and audio archives. <em>2026-09-03T16:22:16-05:00</em> - Update CHANGELOG.md <em>2026-09-03T16:20:50-05:00</em> - FEATURE UPDATE: Added new UI feature and updated existing components Includes example ui_hello.c to demonstrate the new UI functionality. Updated Makefile to include new source files and modified existing source files to integrate the new feature seamlessly. <em>2026-09-03T16:18:40-05:00</em> - Update CHANGELOG.md <em>2026-09-03T11:54:25-05:00</em> - Update CHANGELOG.md <em>2026-09-03T11:50:56-05:00</em> - FEATURE UPDATE: Uniform Abstraction Layer for UI Backends Reorganized the shared internal objects structure to make initialization and population of objects more straightforward. <em>2026-09-03T08:41:52-05:00</em> - Update CHANGELOG.md <em>2026-09-03T08:38:43-05:00</em> - FEATURE UPDATE: Fixed mouse wheel scrolling in view <em>2026-09-02T18:55:29-05:00</em> - Update CHANGELOG.md <em>2026-09-02T18:26:37-05:00</em> - NEW STUFF: The logging system has been rewritten, with selectable loglevels including PANIC, ERROR, WARN, INFO, VERBOSE, AND DEBUG, it color encodes log records and can be accessed via an extremely easy-to-use variadic function (meaning you can have any number of arguments). Check out: ui_log(LogLevel, fmt, content...). <em>2026-09-02T12:25:07-05:00</em> - Update CHANGELOG.md <em>2026-09-02T12:21:03-05:00</em> - FEATURE UPDATE: Fixes and improvements to the ncurses UI backend NCurses stores colors scaled from 0-1000, while Notcurses uses the conventional 0-255 range. This corrects an issue in which the first 16 colors (std_colors) were being scaled up twice, resulting in color distortion. <em>2026-09-02T00:48:15-05:00</em> - Update CHANGELOG.md <em>2026-09-02T00:47:36-05:00</em> - FEATURE UPDATE: Minor UI Enhancements and Code Cleanup <em>2026-09-01T20:25:38-05:00</em> - Update CHANGELOG.md <em>2026-09-01T20:25:08-05:00</em> - FIXES: minor, plus a small documentation update <em>2026-09-01T19:58:23-05:00</em> - Update CHANGELOG.md <em>2026-09-01T19:57:47-05:00</em> - FIXED: resizing issue with Notcurses library and several other minor bugs. <em>2026-09-01T09:45:40-05:00</em> - Update CHANGELOG.md <em>2026-09-01T09:43:53-05:00</em> - FEATURE UPGRADE: Uniform Abstraction Layer (UAL) for UI Backends Reorganizing the UAL for breakout into a separate library. <em>2026-09-01T00:39:02-05:00</em> - Update CHANGELOG.md <em>2026-09-01T00:38:32-05:00</em> - FEATURE UPDATE: Added new features and improvements to the UI backend and Notcurses integration. <em>2026-08-31T19:45:56-05:00</em> - Update CHANGELOG.md <em>2026-08-31T19:44:42-05:00</em> - FEATURE UPDATE: Uniform Abstraction Layer for UI Backends Minor changes have been made to the UI backend abstraction layer, enhancing the modularity and maintainability of the codebase. <em>2026-08-31T17:52:32-05:00</em> - Update CHANGELOG.md <em>2026-08-31T17:51:23-05:00</em> - FEATURE UPDATE: UAL UI Minor improvements and fixes <em>2026-08-31T16:49:46-05:00</em> - Update CHANGELOG.md <em>2026-08-31T16:48:40-05:00</em> - FEATURE UPDATES: UAL input handling minor fixes <em>2026-08-31T16:09:28-05:00</em> - Update CHANGELOG.md <em>2026-08-31T16:08:09-05:00</em> - FEATURE UPDATES: Keyboard and mouse input handling <em>2026-08-31T14:26:30-05:00</em> - Update CHANGELOG.md <em>2026-08-31T14:25:56-05:00</em> - FEATURE UPDATE: Uniform Abstraction Layer (UAL) for UI Backends <em>2026-08-31T13:46:50-05:00</em> - Update CHANGELOG.md <em>2026-08-31T13:46:09-05:00</em> - FEATURE UPDATE: Update UI backend to support new features and improve performance <em>2026-08-30T23:52:09-05:00</em> - Update CHANGELOG.md <em>2026-08-30T23:51:35-05:00</em> - FEATURE UPDATE: Added new features and improvements to the UI backend and initialization view. <em>2026-08-30T22:55:14-05:00</em> - Update CHANGELOG.md <em>2026-08-30T22:53:48-05:00</em> - FEATURE UPDATES Uniform Abstraction Layer (UAL) is a new feature that provides a uniform interface for interacting with different types of hardware and software components. It allows developers to write code that can work across different platforms without needing to worry about the underlying implementation details. <em>2026-08-30T22:40:51-05:00</em> - Update CHANGELOG.md <em>2026-08-30T22:39:43-05:00</em> - FEATURE UPDATES, BUG FIXES, AND IMPROVEMENTS Uniform Abstraction Layer (UAL) for Input Handling: The input handling system has been refactored to provide a uniform abstraction layer, allowing for easier integration of different input methods and devices. This change enhances the flexibility and maintainability of the input handling code. <em>2026-08-30T21:59:24-05:00</em> - Update CHANGELOG.md <em>2026-08-30T21:58:48-05:00</em> - FEATURE UPDATE, BUG FIXES Uniform Abstraction Layer (UAL) for Notcurses <em>2026-08-30T21:42:56-05:00</em> - Update CHANGELOG.md <em>2026-08-30T21:41:56-05:00</em> - FEATURE UPDATE, BUG FIXES, AND PERFORMANCE IMPROVEMENTS Continuing work on the Uniform Abstraction Layer () for the Notcurses library. <em>2026-08-29T20:54:17-05:00</em> - Update CHANGELOG.md <em>2026-08-29T20:53:04-05:00</em> - FEATURE UPDATES: Uniform Abstraction Layer (UAL) for UI Backends Minor updates to the UI backend abstraction layer. <em>2026-08-29T20:07:21-05:00</em> - Update CHANGELOG.md <em>2026-08-29T19:17:51-05:00</em> - FIXES: Uniform Abstraction Layer for NCurses and Notcurses This project is is wrapping up quickly and nicely. There are always a few more things to do, but I see no major obstacles. We are testing, debugging, and preparing to enter the next phase of the project. In UAL_UI Phase II, we will create documentation for the core API and break it out as a general purpose UAL_UI library. Applications using this API can deliver both NCurses and Notcurses backends with the same source code and no perceptible differences in functionality. Phase III will allow us to introduce additional features generally not possible with NCurses, and those features will be packaged as an annex to the core UAL_UI library. We are undecided as to Phase IV, but there are at least three compelling directions, which seem natural and may not be mutually exclusive. We could port C-Menu and the UAL_UI to Windows and Mac. We could develop library code to add needed features to NCurses and Notcurses. Last, but certainly not least, we could develop additional backend implementations for the UAL_UI library, such as SDL2, OpenGL, and Vulkan. The latter would allow us to create a cross-platform, cross-API, and cross-architecture UI library that could be used in a wide variety of applications, including games, scientific visualization, and more. <em>2026-08-28T22:35:44-05:00</em> - FEATURE UPDATE: Same front end API works with NCurses or Notcurses <em>2026-08-28T22:16:54-05:00</em> - Update CHANGELOG.md <em>2026-08-28T22:02:51-05:00</em> - FEATURE UPDATE: Uniform Abstraction Layer for UI Backends If you are considering an upgrade from NCurses to Notcurses, you will find everything you need in this package. We will soon be finished with the implementation of the Uniform Abstraction Layer for NCurses and Notcurses. Basically, you just change the names of your NCurses function calls by adding the prefix "ui_". And that's not all. We have added high-level functions for initialization, drawing, and surface management. We have tamed some of the unwieldy aspects of Notcurses and incorporated convenience features such as color and color pair management as well as input handling. The new UI backend is designed to be compatible with both NCurses and Notcurses, allowing you to switch between the two libraries without having to rewrite your code. Our goal is to deliver the advanced features of Notcurses while maintaining the simplicity and reliability of NCurses. We are confident that this new UI backend will provide a seamless experience for developers looking to upgrade their applications. We are excited to share this update with you and look forward to your feedback. Thank you for your continued support. <em>2026-08-28T15:03:27-05:00</em> - Update CHANGELOG.md <em>2026-08-28T15:03:08-05:00</em> - ISSUE: Notcurses input handling <em>2026-08-28T14:58:44-05:00</em> - Update CHANGELOG.md <em>2026-08-28T14:58:10-05:00</em> - ISSUE: Ncurses input handling <em>2026-08-28T13:58:23-05:00</em> - Update CHANGELOG.md <em>2026-08-28T13:56:58-05:00</em> - FIXES: Notcurses input handling <em>2026-08-28T00:03:48-05:00</em> - Update CHANGELOG.md <em>2026-08-28T00:02:41-05:00</em> - FIX: A few small fixes to the UI drawing functions in Notcurses. <em>2026-08-27T23:55:09-05:00</em> - Update CHANGELOG.md <em>2026-08-27T23:53:32-05:00</em> - FIX: Uniform Abstraction Layer for UI Backends The previous commit didn't include the updates to the NCurses backend, which caused inconsistencies in the UI rendering. This commit ensures that both the Notcurses and NCurses backends adhere to the same abstraction layer, providing a consistent user experience across different terminal environments. <em>2026-08-27T22:41:38-05:00</em> - Update CHANGELOG.md <em>2026-08-27T22:40:22-05:00</em> - CONFIGURATION: Added border styles, single, rounded, double, heavy, and none. Also updated the default themes with more tolerable colors. <em>2026-08-27T22:32:26-05:00</em> - Update CHANGELOG.md <em>2026-08-27T22:25:46-05:00</em> - FEATURE: Uniform Abstraction Layer (UAL) for NCurses and Notcurses The prooject is coming along nicely, and I have been working on a uniform abstraction layer (UAL) that will allow the project to support both NCurses and Notcurses seamlessly. This will enable users to choose their preferred backend without any changes to the core functionality of the application. This library is not limited to C-Menu, but can be used in any project that would benefit from an upgrade from NCurses to Notcurses, that would benefit from supporting both Notcurses and NCurses. Use Notcurses on your high-powered desktop for rich feature support and NCurses for servers, legacy platforms, and embedded applications. <em>2026-08-27T11:04:29-05:00</em> - Update CHANGELOG.md <em>2026-08-27T10:58:32-05:00</em> - FEATURE: Uniform Abstract UI Backend Allows selection of different UI backends (currently NCurses and Notcurses) at runtime, enabling flexibility in UI rendering and input handling. The NCurses backend is fully functional, while the Notcurses basckend is still under development and may not support all features. The code is structured to facilitate the addition of new backends in the future, promoting modularity and maintainability. This feature enhances the user experience by providing a consistent interface across different terminal environments, while also allowing for backend-specific optimizations and capabilities. The implementation includes a unified interface for UI operations, abstracting away the details of the underlying backend, and ensuring that the application can operate seamlessly regardless of the chosen UI backend. This design choice not only improves code readability and maintainability but also allows for easier testing and debugging of UI components. <em>2026-08-25T22:13:23-05:00</em> - Update CHANGELOG.md <em>2026-08-25T22:11:43-05:00</em> - FEATURE: Uniform Ui Backend The objective at this point is to converge the Ncurses and Notcurses backends into a single unified backend. This will allow for a more consistent and streamlined user interface experience across different terminal environments. <em>2026-08-25T11:48:27-05:00</em> - Update CHANGELOG.md <em>2026-08-25T11:40:46-05:00</em> - FEATURE: Uniform API for UI Backends Whether to use ncurses or notcurses as the UI backend. Both have their own advantages and disadvantages, but you need not choose one over the other. You can use notcurses on your desktop for a feature-rich experience, and ncurses on your server for a lightweight and stable experience. No one should be forced to choose between the two, and this feature allows you to use both. <em>2026-08-21T23:03:35-05:00</em> - Update CHANGELOG.md <em>2026-08-21T22:53:27-05:00</em> - FEATURE: Uniform Abstraction Layer for UI Backends This commit includes ongoing updates to the Uniform Abstraction Layer for UI Backends (UAL_UI), enhancing the modularity and maintainability of the codebase. This will be particularly interesting to you if you have code that uses the NCurses library, or if you are about to develop code with a text-based user interface. NCurses has been around for a long time. It is solid and battle-tested. It will be around for a long time to come because it implements the standardized programming interface described by X/Open Curses (part of the X/Open Portability Guide and Single UNIX Specification). Not unlike your Grandmother's Buick. Notcurses, on the other hand, is a relatively new library that provides a more modern and feature-rich approach to text-based user interfaces. It offers advanced capabilities such as high-performance rendering, multimedia support, and enhanced input handling. Not unlike your Grandmother's ZR1 Corvette. Personally, I have a soft spot for the ZR1 Corvette. It is a beautiful car that combines style, performance, and innovation. It represents a leap forward in automotive engineering, much like Notcurses does for text-based user interfaces. However, I understand that some people prefer the reliability and familiarity of a classic car like the Buick, which is why I have made sure that the UAL_UI can support both NCurses and Notcurses, allowing developers to choose the backend that best suits their needs. <em>2026-08-21T01:25:33-05:00</em> - Update CHANGELOG.md <em>2026-08-21T00:44:48-05:00</em> - FEATURE: Uniform Abstraction Layer for UI Backends. This project is coming together better than I expected. (1) Consistent interface that leverages both NCurses and Notcurses using the same function calls. (2) Especially useful for developers who want to switch between the two backends. (3) Eliminates common stumbling blocks for developers transitioning from the NCurses paradigm to Notcurses. (4) Notcurses can do anything that NCurses can do, and much more. (5) NCurses is not just widely used, it is ubiquitous. Conformance to the X/Open Curses standard ensures that NCurses is available on virtually every platform, and it is the default choice for many developers. (6) Allows developers to use the strengths of both libraries without having to learn two separate APIs. (7) Simplifies the Notcurses API, eliminating the steep learning curve normally associated with Notcurses. Until now, the Notcurses API wass more complex and required a deeper understanding of the library. (8) The UAL_UI is implemented in the src/ui directory and is composed of several files that provide the necessary functions and data structures to support both backends. This code will eventually become a separate library. (9) - Highly extensible, allowing for future enhancements and additional backend support. The abstraction layer is a testament to the project's commitment to providing a high-quality and user-friendly development experience, and it will undoubtedly contribute to the growth and success of the project in the future. <em>2026-08-19T22:05:12-05:00</em> - Update CHANGELOG.md <em>2026-08-19T21:59:21-05:00</em> - FEATURE: Uniform Abstraction Layer for UI Backends. At first, I thought this project might be a bit too ambitious. Now, only a handful of functions remain to be implemented in the backend-specific code, while the rest of the UI logic is now handled in a backend-agnostic manner. This change significantly improves maintainability and allows for easier integration of new UI backends in the future. The abstraction layer provides a consistent interface for UI operations, enabling developers to focus on the core functionality without worrying about backend-specific details. This change also includes updates to the existing backend implementations to conform to the new abstraction layer, ensuring that all UI backends work seamlessly with the updated codebase. Overall, this change enhances the flexibility and scalability of the UI system, making it easier to adapt to different environments and user requirements. <em>2026-08-18T20:30:06-05:00</em> - Update CHANGELOG.md <em>2026-08-18T20:25:18-05:00</em> - FEATURE: Uniform Abstraction Layer for UI Backends. Although the refactoring for multiple UI backends is painfully tedious, it will provide many benefits in the long run. The goal is to create a uniform abstraction layer that allows for easy switching between different UI backends, such as ncurses and notcurses. This will enable developers to choose the most suitable backend for their needs without having to rewrite their code. We are creating a set of common interfaces and structures that both backends can implement, ensuring consistency and maintainability across the codebase. <em>2026-08-16T22:08:18-05:00</em> - Update CHANGELOG.md <em>2026-08-16T21:27:36-05:00</em> - FEATURE: Uniform Abstraction Layer For UI Backends. In order to mesh seamlessly with the new Notcurses backend, it has been necessary to standardize the way that the UI backend is accessed. This has been done by creating a uniform abstraction layer that defines a set of functions and data structures that uniformly represent the capabilities of the UI backends. Fortunately, most UI backends do the same kinds of things, but the devil is in the details. The programmers who write the backend UI code are absolute geniuses and what seems obvious to them may not be so obvious to everyone else. This abstraction layer is designed to provide a jump-start for those who want to build sophisticated high-level applications immediately, without spending decades to learn the intricacies of low level UI programming. <em>2026-08-16T14:52:37-05:00</em> - Update CHANGELOG.md <em>2026-08-16T14:42:42-05:00</em> - FEATURE: Uniform Abstraction Layer (UAL) for UI Backends. In this commit, we are standardizing data types and function signatures to allow C-Menu to communicate seamlessly with different UI backends. In doing so, we have held casting and compiler directives to a minimum, ensuring that the code remains clean and maintainable. <em>2026-08-16T09:35:03-05:00</em> - Update CHANGELOG.md <em>2026-08-16T09:16:14-05:00</em> - FIX: dwin.c: lost box characters after title insertion, ui_surface_destroy overshot counter causing a segmentation fault. It had been set to destroy 0 through 8, which is 9. Properly setting the upper limit refactor SUB_SFC_MAX fixes the issue, even if more sub-surfaces are added in the future. <em>2026-08-15T23:33:01-05:00</em> - Update CHANGELOG.md <em>2026-08-15T23:30:29-05:00</em> - FEATURE: UAL - Continuing to add support for Notcurses and NCurses backends. This commit includes minor clean-up work on the UI backend code. The work continues. <em>2026-08-15T18:46:26-05:00</em> - Update CHANGELOG.md <em>2026-08-15T18:35:46-05:00</em> - FEATURE: Uniform Abstraction Layer for UI Backends. As the integration of Notcurses proceeds, we find it necessary to modify the NCurses backend to align with the new abstraction layer. This commit includes changes to the Notcurses backend, and the Ncurses backend as well. How do you convert NCurses to Notcurses? Insert "ot" after the "N". <em>2026-08-14T15:52:50-05:00</em> - Update CHANGELOG.md <em>2026-08-14T15:47:42-05:00</em> - FEATURE: Uniform Abstraction Layer (UAL) for UI Backends. The 16-byte Notcurses nccell contains a 32 bit gcluster, which can be extended through an EGC (Extended Grapheme Cluster) pool, an architectural component of the Notcurses plane. This robustly handles Unicode characters and their attributes, but it presents some challenges when adapting existing code that was designed for NCurses. <em>2026-08-13T18:08:46-05:00</em> - Update CHANGELOG.md <em>2026-08-13T17:14:44-05:00</em> - FEATURE: Uniform Abstraction Layer for UI Backends. The NCurses backend is now fully integrated into the UI abstraction layer and the NotCurses backend is underway. It would have been much easier to convert to NotCurses than to support both backends, but I do not think the choice between NCurses and NotCurses is a matter of preference. NotCurses is incredibly capable and will support features that NCurses cannot. In addition to text, with Notcurses, you will be able to view photo albums and videos in C-Menu View. You can't do that with NCurses. However, the C-Menu build with NCurses can run on a wide range of systems, including those that may not have NotCurses installed. That includes older Linux distributions, SOC's, and embedded systems. I can't choose between NCurses and NotCurses. I must have both, and so should you. <em>2026-08-13T13:23:41-05:00</em> - Update CHANGELOG.md <em>2026-08-13T13:19:24-05:00</em> - FEATURE: Uniform Abstraction Layer (UAL) for UI Backends. Added compatibility code to provide an NCurses-like Colors and Color Pairs API for Notcurses. This allows for easier integration of Notcurses into existing codebases that were originally designed for NCurses, by providing a familiar interface for color management. The UAL ensures that developers can leverage the advanced features of Notcurses while maintaining compatibility with legacy NCurses code, facilitating a smoother transition and reducing the learning curve for developers familiar with NCurses. This enhancement aims to improve the usability and flexibility of the Notcurses library, making it more accessible to a wider range of applications and developers. <em>2026-08-12T21:17:48-05:00</em> - Update CHANGELOG.md <em>2026-08-12T21:02:18-05:00</em> - FEATURE: Uniform Abstraction Layer for UI Backends. NCurses and NotCurses, despite the differences in design philosophy, have a lot in common. The NCurses maintainer, Thomas E. Dickey, is like the Rock of Gibraltar in the world of terminal handling. He has been maintaining NCurses for decades, and his work is a testament to the power of open-source collaboration. NotCurses, on the other hand, is more like a rocket scientist, with comprehensive knowledge on the leading edge of terminal handling. The NotCurses maintainer, Drew DeVault, is a brilliant mind in the field, and his work is a testament to the power of innovation. How lucky am I to have the opportunity to learn from these giants in the field of terminal handling? I am so grateful for their contributions. <em>2026-08-11T23:05:05-05:00</em> - FEATURE: Uniform Abstraction Layer for Ui Backends. Continue testing and refactoring C-Menu's codebase. <em>2026-08-11T16:01:26-05:00</em> - Update CHANGELOG.md <em>2026-08-11T15:24:50-05:00</em> - FEATURE: Uniform Abstraction Layer (UAL) for UI Backends. Updated CMakeLists.txt and GNUMakefile to include new source files for UAL. The project builds successfully with no errors or warnings. With C-Menu's current feature set, we can and will achieve 100% parity whether C-Menu is built with NCurses or NotCurses before adding backend-specific feature implementations. <em>2026-08-10T14:21:18-05:00</em> - Update CHANGELOG.md <em>2026-08-10T13:58:58-05:00</em> - FEATURE: Uniform Abstraction Layer (UAL) for UI Backends. I thought I knew Ncurses pretty well, but digging into the internals of Ncurses and Notcurses side-by-side has been enlightening. I have tremendous respect for the developers of both libraries. NCurses is solid and battle-tested, but Notcurses is a more modern and flexible library that can do things that NCurses cannot. The goal of this project is to create a uniform abstraction layer (UAL) that allows developers to write code that can work with both NCurses and Notcurses without having to worry about the differences between the two libraries. This will make it easier for developers to write code that can work with both libraries, and will also make it easier to switch between the two libraries if needed. <em>2026-08-09T17:56:05-05:00</em> - Update CHANGELOG.md <em>2026-08-09T17:55:20-05:00</em> - FEATURE: Uniform Abstraction Layer (UAL) for UI Backends <em>2026-08-08T17:58:52-05:00</em> - Update CHANGELOG.md <em>2026-08-08T17:58:13-05:00</em> - FEATURE: Add support for new UI backend and improve existing UI components <em>2026-08-08T11:25:31-05:00</em> - Update CHANGELOG.md <em>2026-08-08T11:23:18-05:00</em> - FIX: View command line not echoing and full screen initialization not working <em>2026-08-08T10:52:41-05:00</em> - Update CHANGELOG.md <em>2026-08-08T10:50:39-05:00</em> - Update CHANGELOG.md <em>2026-08-08T10:49:54-05:00</em> - DOCUMENTATION: Add file picker image <em>2026-08-07T23:14:44-05:00</em> - Update CHANGELOG.md <em>2026-08-07T23:12:16-05:00</em> - FIX: dwin.c: multibyte to complex character array failed if the parameter, pos, was zero. <em>2026-08-07T17:00:48-05:00</em> - Update CHANGELOG.md <em>2026-08-07T16:59:18-05:00</em> - FIX: form_engine.c screen corruption when using F9 to exit Form because the surface counter was being set too early. <em>2026-08-07T13:59:58-05:00</em> - Update CHANGELOG.md <em>2026-08-07T13:48:04-05:00</em> - FEATURE: The Uniform Abstraction Layer User Interface is coming along well. On the NCurses side, all of the UI initialization and most of the window management functions have been moved into the new abstraction layer, and the UI is now fully functional with the new layer. The Notcurses side is also progressing, with the initialization and window management functions being moved into the abstraction layer. The next steps will be to move the input handling functions into the abstraction layer, and to implement the necessary changes to the UI code to work with the new layer. Once that is done, the UI will be fully functional with both NCurses and Notcurses, and the abstraction layer will be complete. This will allow for easier maintenance and future development of the UI, as well as the possibility of adding support for other UI libraries in the future. Overall, this is a significant step forward in the development of the Uniform Abstraction Layer User Interface, and it is exciting to see the progress being made. The next steps will be to continue moving the input handling functions into the abstraction layer, and to implement the necessary changes to the UI code to work with the new layer. <em>2026-08-06T19:25:15-05:00</em> - Update CHANGELOG.md <em>2026-08-06T18:35:42-05:00</em> - FEATURE: Progress continues with the implementation of the UI backend. As the codebase hovers around 22,000 lines, many function calls had to be adapted, added, or replaced to support the new UI backends. I am taking the time to remove old code that is duplicative or marginal. It's not lost time. Adapting the codebase to work with two disparate UI backends has given me reason and opportunity to look at the codebase with fresh eyes. As a result, I have gained new insights on C-Menu and the user interface libraries. Sometimes you need to shake things up to see them in a new light. It reminds me poem by Robert Frost, "The woods are lovely, dark and deep. But I have promises to keep, And miles to go before I sleep, And miles to go before I sleep." <em>2026-08-06T09:28:57-05:00</em> - Update CHANGELOG.md <em>2026-08-06T09:27:52-05:00</em> - FIX: minor fixes to the NCurses backend <em>2026-08-05T15:45:05-05:00</em> - Update CHANGELOG.md <em>2026-08-05T15:40:37-05:00</em> - FIX: view_engine.c word wrap off by 1 when separator character occurred at maximum line length + 1. <em>2026-08-05T14:29:06-05:00</em> - Update CHANGELOG.md <em>2026-08-05T14:27:06-05:00</em> - FIX: In line wrap mode, view was not displaying on the active window. <em>2026-08-05T11:37:37-05:00</em> - Update CHANGELOG.md <em>2026-08-05T11:36:29-05:00</em> - FEATURE: Continuing refactoring of UI code to support multiple backends (ncurses and notcurses). This commit includes updates to various source files and header files to improve the structure and maintainability of the UI components. The changes involve modifications to field handling, cursor keys, window management, form engine, menu engine, pick engine, and view engine. <em>2026-08-01T12:40:20-05:00</em> - Update CHANGELOG.md <em>2026-08-01T12:39:11-05:00</em> - FEATURE: Continuing to integrate UAL into C-Menu. <em>2026-07-31T19:19:58-05:00</em> - Update CHANGELOG.md <em>2026-07-31T18:51:18-05:00</em> - FEATURE: The Uniform Abstraction Layer (UAL) is commencing nicely. Curskeys, a keyboard and mouse diagnostic tool, was ported to the UAL first because it is small, and it provides a good diagnostic tool for testing the UAL. When finished, the UAL will allow C-Menu to use multiple UI backends. NCurses is currently supported, and the Notcurses port is already underway. The capabilities of Notcurses are truly amazing. Imagine C-Menu View with images, audio, and video. We believe it will be a major leap forward. Because of the UAL, we will be able to add other backends as well, such as GTK, QT, and maybe even SwiftUI - without requiring changes to the C-Menu codebase. Of course, we will continue to provide support for NCurses because it is rock-solid, and ubiquitous. <em>2026-07-30T21:58:22-05:00</em> - Update CHANGELOG.md <em>2026-07-30T21:56:18-05:00</em> - FEATURE: Continuing to implement the UI backend for Notcurses, focusing on the integration of the ncurses library and enhancing the user interface components. This update includes modifications to various source files, including the Makefile, curskeys.c, dwin.c, enterchr.c, enterstr.c, exec.c, form_engine.c, futil.c, and several others. Additionally, a new file UALUI.md has been added to document the UI backend implementation. <em>2026-07-29T18:43:38-05:00</em> - Update CHANGELOG.md <em>2026-07-29T18:21:49-05:00</em> - FEATURE: Test/Debug Uniform Abstraction Layer UI for NCurses build with -DUAL_UI, which implements the API for the UAL-UI. # Please enter the commit message for your changes. Lines starting <em>2026-07-29T12:46:15-05:00</em> - Update CHANGELOG.md <em>2026-07-29T12:42:06-05:00</em> - FIXES: Building with -DUAL_UI, several minor fixes have been made to the NCurses UI code. <em>2026-07-29T10:50:37-05:00</em> - Update CHANGELOG.md <em>2026-07-29T10:49:47-05:00</em> - FEATURE: Reorganize UI code, remove superfluous files. <em>2026-07-28T20:45:21-05:00</em> - Update CHANGELOG.md <em>2026-07-28T20:44:45-05:00</em> - FEATURE: Add code related to the UAL (User Abstraction Layer) and notes UI, including new files for UAL implementation and modifications to existing files for UI backend and surface handling. <em>2026-07-28T15:49:52-05:00</em> - Update CHANGELOG.md <em>2026-07-27T21:11:57-05:00</em> - Update CHANGELOG.md <em>2026-07-27T21:01:38-05:00</em> - FEATURE: Continuing to add support for Notcurses while maintaining compatibility with NCurses. Both APIs will be subsumed into a super-API that can use either backend or others while maintaining a consistent interface with the application program. <em>2026-07-26T18:20:07-05:00</em> - Update CHANGELOG.md <em>2026-07-26T18:00:40-05:00</em> - FEATURE: Add Notcurses support for C-Menu. This project is just getting started. The first step is to construct and test the functional components of the user interface. Next, the functional components will be integrated into the C-Menu API. Finally, we will interpose an abstraction layer between the functional components and the C-Menu API. This abstraction layer will allow C-Menu consumers to use a variety of user interfaces, NCurses and Notcurses initially, and later, KDE, QT, GTK, and others. It's an ambitious project, but we believe it will be worth the effort. The C-Menu API is a powerful and flexible interface for building text-based user interfaces, and we want to make it as easy as possible for developers to use it. By adding support for Notcurses, we hope to provide a more modern and feature-rich alternative to NCurses, while still maintaining compatibility with existing C-Menu applications. We are excited to see what developers will create with this new functionality, and we look forward to continuing to improve and expand the C-Menu API in the future. We welcome feedback and contributions from the community <em>2026-07-22T17:19:09-05:00</em> - Update CHANGELOG.md <em>2026-07-22T17:17:13-05:00</em> - FEATURE: Customized Tree-Sitter system log parser with Smart Line Wrapping in View. <em>2026-07-22T10:34:26-05:00</em> - Update CHANGELOG.md <em>2026-07-22T09:57:58-05:00</em> - Update CHANGELOG.md <em>2026-07-22T09:57:03-05:00</em> - FIXES: view_engine.c: set scroll_up() top line <em>2026-07-22T09:50:40-05:00</em> - Update CHANGELOG.md <em>2026-07-22T09:47:52-05:00</em> - counters and other loose ends at this point. <em>2026-07-21T19:22:06-05:00</em> - Update CHANGELOG.md <em>2026-07-21T18:53:02-05:00</em> - FIX: view_engine.c: pressing down arrow and then up arrow on a partially filled display due to an "end of data" condition would scroll down, and then redisplay the first two lines, resulting in duplication of the second line. Fixed. <em>2026-07-21T16:05:26-05:00</em> - Update CHANGELOG.md <em>2026-07-21T16:02:53-05:00</em> - FIXES: Continuing general clean-up of view_engine.c after refactoring. Added function to convert file positions to line numbers. <em>2026-07-20T19:54:07-05:00</em> - Update CHANGELOG.md <em>2026-07-20T19:53:49-05:00</em> - DOCS: Documentation update <em>2026-07-20T16:12:24-05:00</em> - Update CHANGELOG.md <em>2026-07-20T16:05:17-05:00</em> - FIX: view_engine.c: valgrind identified several leaks in search(), where execution avoided regfree() due to return statements. I don't pull my hair out over these kinds of things anymore. I just asked Co-Pilot to fix it for me. It did. I am grateful for that. I will now go back to my life and not worry about this anymore. I will not worry about this anymore. I will not worry about this anymore. I will not worry about this anymore. I will not worry... <em>2026-07-20T14:54:09-05:00</em> - Update CHANGELOG.md <em>2026-07-20T14:53:39-05:00</em> - FIX: view_engine.c minor cleanup <em>2026-07-20T11:53:58-05:00</em> - Update CHANGELOG.md <em>2026-07-20T11:31:39-05:00</em> - FEATURES and FIXES: Continuation of view_engine refactoring and cleanup. ANSI SGR input (converted to complex character arrays for display), Support for highlighting tools such as Tree-Sitter, Pygments, Bat, and others, Memory mapped file support for large files, NCursesw panels, smart line wrapping, and a foundation for a Uniform Abstraction Layer User Interface. <em>2026-07-19T18:52:56-05:00</em> - Update CHANGELOG.md <em>2026-07-19T18:48:22-05:00</em> - FIXES: Added screen handling for word wrapped lines in view_engine.c. The view_engine is still a work in progress, but this commit represents a cursory testing of functionality, but no edge cases have been tested yet. It's still pre-release, but I hope it works well enough to be useful and give users some insight on where the project is headed. <em>2026-07-16T07:44:56-05:00</em> - Update CHANGELOG.md <em>2026-07-16T07:44:38-05:00</em> - DOCS: Documentation update <em>2026-07-15T21:19:40-05:00</em> - Update CHANGELOG.md <em>2026-07-15T21:05:46-05:00</em> - FEATURE: view: smart line wrapping. The testing and debugging for this update is incomplete, but the feature is somewhat functional. By starting View with the "-w" option, or entering "-w" from a View command prompt, the user can enable smart line wrapping. See the README.md for a comparison of View with other popular text viewers. C-Menu's View is the perfect tool for examining large log files with long lines. Where other pagers just chop the lines in at the right edge, C-Menu's View intelligently wraps lines at word boundaries rendering 1000+ byte lines in a readable format. The user can also toggle the smart line wrapping feature on and off while viewing a file. The difference in readability is dramatic. Check it out. In the meantime, I will continue to test and debug in preparation for the next release. <em>2026-07-12T21:40:40-05:00</em> - Update CHANGELOG.md <em>2026-07-12T21:39:32-05:00</em> - FEATURE: Line wrapping is not quite ready yet, but I wanted to get this in before the next release. <em>2026-07-11T19:19:07-05:00</em> - Update CHANGELOG.md <em>2026-07-11T19:07:45-05:00</em> - FEATURE: Adding a toggle option for line wrapping in the view engine. The code that splits long lines into multiple lines is already present in the view engine, but it is not complete. When it is, I will add a toggle option to enable or disable line wrapping. <em>2026-07-07T23:11:06-05:00</em> - Update CHANGELOG.md <em>2026-07-07T23:06:39-05:00</em> - FIX: dwin.c: make Perror() window width large enough to accommodate chyron. /menuapp/themes: Adjust theme colors to be more readable. <em>2026-07-07T18:09:46-05:00</em> - Update CHANGELOG.md <em>2026-07-07T18:09:14-05:00</em> - DOCS: Documentation Updates <em>2026-07-07T17:13:03-05:00</em> - Update CHANGELOG.md <em>2026-07-07T17:12:41-05:00</em> - FIX: Update themes and scripts in menuapp <em>2026-07-07T17:09:57-05:00</em> - Update CHANGELOG.md <em>2026-07-07T17:09:23-05:00</em> - FIX: Insert code to read theme file in init.c <em>2026-07-07T16:48:45-05:00</em> - Update CHANGELOG.md <em>2026-07-07T16:47:00-05:00</em> - FIX: CMakeLists.txt: added UAL_UI components to CMakeLists.txt and tested build. Executables and libraries built successfully. <em>2026-07-07T11:53:42-05:00</em> - Update CHANGELOG.md <em>2026-07-07T11:51:19-05:00</em> - FIXES: The width of the pad for full-screen mode was set to COLS instead of PAD_COLS, which truncated lines as pmincol was shifted to the right in horizontal scrolling. Fixed. <em>2026-07-07T10:23:15-05:00</em> - Update CHANGELOG.md <em>2026-07-07T10:22:32-05:00</em> - FIX: pick_engine.c: hide page down on last page <em>2026-07-07T09:18:20-05:00</em> - Update CHANGELOG.md <em>2026-07-07T09:15:44-05:00</em> - FIX: Added clrtoeol after displaying the input field in pick_engine.c search line. <em>2026-07-06T19:54:09-05:00</em> - Update CHANGELOG.md <em>2026-07-06T19:53:52-05:00</em> - DOCS: Documentation Updates <em>2026-07-06T19:51:04-05:00</em> - Update CHANGELOG.md <em>2026-07-06T19:50:42-05:00</em> - DOCS: Documentation Updates <em>2026-07-06T19:46:06-05:00</em> - Update CHANGELOG.md <em>2026-07-06T19:27:02-05:00</em> - FIXES: At this point, we are examining the code and resolving as many issues as possible while laying the groundwork for the next phase of development. We resolved several issues in this update related to the pick and view engines, as well as the initialization process. We are continuously improving screen handling and aesthetics to make C-Menu more intuitive and user-friendly. <em>2026-07-05T22:39:50-05:00</em> - Update CHANGELOG.md <em>2026-07-05T22:39:12-05:00</em> - FIX: view_engine.c: Continuing refinements of command line editor. <em>2026-07-05T21:02:24-05:00</em> - Update CHANGELOG.md <em>2026-07-05T21:01:15-05:00</em> - FIX: This is the clean-up of the second form of input used on the view command line. <em>2026-07-05T15:28:25-05:00</em> - Update CHANGELOG.md <em>2026-07-05T15:06:14-05:00</em> - FIX: View's command line editor takes two kinds of input. The first is an optional numeric argument that precedes single-character commands. For example, to scroll 5 spaces to the right, you can type "5l" in the command line. The second is a command argument that follows a command. For example, to search for the string "foo", you can type "/foo" in the command line. We are shoring up the command line editor to handle arguments more robustly. We also added logic to elide sections of the prompt string that are not relevant to the current command, or would produce a prompt string that is too long to fit in the command line. <em>2026-07-04T19:03:16-05:00</em> - Update CHANGELOG.md <em>2026-07-04T19:02:47-05:00</em> - DOCS: Documentation Updates <em>2026-07-04T16:54:34-05:00</em> - Update CHANGELOG.md <em>2026-07-04T16:19:48-05:00</em> - FIXES: Several issues with derived windows, panels, and pads in view_engine.c and init_view.c. The refactoring of C-Menu in preparation for the new Uniform Abstraction Layer User Interface (UAL_UI) turned out to be more disruptive than expected. Nevertheless, the refactoring continues to bring C-Menu closer to the UAL_UI design objectives. Scalability, resilience to change, and maintainability are improving as well. Z-stack management with derived windows, panels, and pads is more robust, paving the way for cellular grapheme clusters, multi-media integration, and plug-in interfaces. <em>2026-07-03T20:34:08-05:00</em> - Update CHANGELOG.md <em>2026-07-03T19:59:28-05:00</em> - FIXES: Several issues with the view engine fixed, but a few more remain. We have added many new and powerful features in the last few months, including highlighter integration, Neovim code completion, Unicode support, pads, panels, an async worker queue thread pool, direct kernel virtual memory file mapping, live file preview with View in Pick, and more, but the next wave will be even more exciting. We have only scratched the surface of what is possible with the new view engine. but The next wave will be even more exciting, with a Uniform Abstraction Layer User Interface (UAL_UI). That will allow us to provide Notcurses as a UI backend, and that will give us a bridge to other platforms including Windows, and MacOS. However, we should probably get to release 1.0.0 first, and that means we need to fix the remaining bugs and issues, and we need to make sure that the new features are stable and well-tested. We also need to improve the documentation and provide more examples and tutorials for users. That's an invitation to all users to help us test and report any issues they find, and to contribute to the project if they can. We welcome all contributions, big or small, and we appreciate any help we can get. <em>2026-07-02T22:30:43-05:00</em> - Update CHANGELOG.md <em>2026-07-02T22:07:56-05:00</em> - REFACTOR: Preparation for Uniform Abstraction Layer User Interface. Added cm_fields.c, which will eventually replace fields.c. cm_fields.c will be a simpler, more streamlined, and yet functionally equivalent replacement for fields.c. fields.c works well, but it turned out to be overly complicated and laborious to maintain. <em>2026-07-02T10:25:51-05:00</em> - Update CHANGELOG.md <em>2026-07-02T10:23:24-05:00</em> - FIXES: init_view.c: fixed issues in view when resizing the terminal window <em>2026-06-29T22:40:47-05:00</em> - Update CHANGELOG.md <em>2026-06-29T22:40:10-05:00</em> - FIX: Cosmetic adjustments to View and Pick engines. <em>2026-06-29T21:28:37-05:00</em> - DOCS: Documentation Updates <em>2026-06-29T14:55:04-05:00</em> - Update CHANGELOG.md <em>2026-06-29T14:32:08-05:00</em> - FEATURE: pick_engine.c, dwin.c: Added an activation flag to the chyron structure. This makes it easier for C-Menu to display content that is relevant to the context of the application. <em>2026-06-29T07:42:30-05:00</em> - Update CHANGELOG.md <em>2026-06-29T07:39:38-05:00</em> - FIX: pick_engine.c: corrected handling of multiple object selections <em>2026-06-28T16:04:39-05:00</em> - Update CHANGELOG.md <em>2026-06-28T16:01:51-05:00</em> - FIX: pick_engine.c: After entering a search expression and returning to the selection window, and then returning to the search window, the previous position pointer was initialized causing the field editor to get confused. Fixed that. <em>2026-06-28T15:56:02-05:00</em> - Update CHANGELOG.md <em>2026-06-28T15:49:52-05:00</em> - FIXES: The box window was too small for the picker window, which caused scroll to overwrite the search window and part of the border. Internally C-Menu uses ratios in percentages to calculate window sizes, and one of the calculations was incorrect. <em>2026-06-28T12:26:23-05:00</em> - Update CHANGELOG.md <em>2026-06-28T12:21:55-05:00</em> - FIXES: Corrected issues in src/fields.c and src/form_engine.c, which were causing a number of problems. Also resolved some issues that had surfaced in valgrind. If you are wondering why valgrind includes the ncurses references, here is the answer: To prevent a subprogram from interacting with the NCurses instance in the current process, it is idiomatic to call endwin(). By design, NCurses retains nominal state information to facilitate efficient reactivation. This is normal behavior for NCursesw and is not a memory leak. <em>2026-06-27T16:55:31-05:00</em> - Update CHANGELOG.md <em>2026-06-27T16:38:31-05:00</em> - FIXES: Many various and sundry fixes to the codebase. The recent addition of Ncurses Panels followed immediately by integrating framework for the Uniform Abstraction Layer (UAL) has caused a number of issues to crop up in the codebase. This commit addresses those issues and improves the overall stability and functionality of the application. The UAL will provide plug-in support for many new and diverse capabilities. <em>2026-06-27T00:47:47-05:00</em> - Update CHANGELOG.md <em>2026-06-27T00:36:07-05:00</em> - FIXES: The refactoring to accommodate the new Uniform Abstraction Layer User Interface (UAL_UI) stressed the C-Menu code base, resulting in a number of issues. After a long day of debugging, the major issues have been resolved. Among the issues were three definitely lost memory blocks. There are still 64 bytes dangling, but not lost. They are NCurses panels, which may not be freed until the end program. <em>2026-06-25T17:26:17-05:00</em> - DOCS: Update Changelog <em>2026-06-25T17:14:56-05:00</em> - REFACTOR: Many changes today as we back the Uniform Abstraction Layer User Interface (UAL_UI) into the code base. This code isn't supposed to do anything new yet. The objective is to provide a uniform interface through which C-Menu can communicate with an abstracted UI backend. The UAL_UI is a work in progress, and the current implementation is not complete. The goal is to eventually allow C-Menu to support multiple UI backends, such as ncurses, notcurses, and potentially others. The changes made today include - Adding new files for the notcurses backend, including example.c, ui_draw_with_channels.c, and ui_mvaddcell.c. - Modifying existing files to integrate the UAL_UI # Please enter the commit message for your changes. Lines starting <em>2026-06-24T00:39:27-05:00</em> - Update CHANGELOG.md <em>2026-06-24T00:12:32-05:00</em> - FEATURE: menuapp/msrc/main.m: Rustlings Source: Added "-S" (sort) option to lf command. <em>2026-06-23T12:33:00-05:00</em> - FIX: lf somehow regressed to a previous version in which hidden directories were not being traversed unless the "f_include_hidden" option was set to true. This commit fixes that regression and ensures that hidden directories are always traversed, regardless of the "f_include_hidden" option. <em>2026-06-23T11:12:17-05:00</em> - CLEANUP: in anticipation of UALUI integration with the new UI engine. This commit includes modifications to various source files, including curskeys.c, dwin.c, fields.c, form_engine.c, cm.h, init_view.c, menu.c, menu_engine.c, pick_engine.c, ui_ncurses.c, ui_ncurses_internal.h, and view_engine.c. The changes aim to improve the overall functionality and user experience of the application. <em>2026-06-23T09:08:06-05:00</em> - FIX: dwin.c someone inadvertently removed a line of code, getmaxyx(), causing core dump on start-up. Fixed that. <em>2026-06-22T21:24:47-05:00</em> - FIX: Ncurses documentation states that libpanelw should be placed before libncursesw in the link order. This commit updates the Makefile to reflect this change, ensuring that libpanelw is linked before libncursesw. This adjustment is crucial for proper functionality and compatibility with the ncurses library. <em>2026-06-22T21:13:04-05:00</em> - DOCS: CHANGELOG.md updated with new release notes. <em>2026-06-22T20:02:27-05:00</em> - FIX: view_engine.c: pad_refresh was placed before update_panels/doupdate, so NCurses was correctly updating pad, and then the panels, which overwrote the pad. Fixed that. <em>2026-06-21T23:34:48-05:00</em> - FIX: Fix a few memory leaks and some minor bugs after adding the UALUI code, but a 32 byte win_box panel is definitely lost. I am still tracking it down, but C-Menu seems to be functioning properly. A valgrind output file has been saved in the C-Menu/src directory. <em>2026-06-20T18:25:44-05:00</em> - REFACTOR: UI_NCURSES isolation and Uniform Abstraction Layer User Interface (UI_BACKEND) Implementation <em>2026-06-20T13:42:23-05:00</em> - DOCS: Update README.md <em>2026-06-20T11:39:49-05:00</em> - DOCS: Update CHANGELOG.md <em>2026-06-20T11:25:44-05:00</em> - FIX BUG: Replaced internal border function with NCurses setborder(), but that won't work for Pick because it has a split-window, so this fix reverts to the internal border function for Pick. The idea behind abandoning internal code for setborder() is to standardize the code and reduce maintenance. The internal border function for split-windows works fine, so it will be retained for Pick. <em>2026-06-19T23:55:27-05:00</em> - FEATURE: Update README and CHANGELOG <em>2026-06-19T23:40:50-05:00</em> - FEATURE: Yes, something is underway. There should be no functional changes at this point. This is a refactor, and the first step is to move all of the ncurses-specific code into a separate directory. This will allow us to eventually support multiple backends, and to cleanly separate the concerns of the UI from the core logic of the application. The next step will be to abstract the UI layer, so that we can have a clean interface between the core logic and the UI. This will allow us to more easily support multiple backends, and to make the code more modular and maintainable. The final step will be to implement a new backend, perhaps using a modern graphics library, to provide a more visually appealing and responsive user interface. This will be a significant undertaking, but it will ultimately result in a much better user experience and a more maintainable codebase. In the meantime, we will continue to support the existing ncurses backend, and we will work to ensure that the refactor does not introduce any regressions or break any existing functionality. This is an exciting time for the project, and I look forward to seeing the improvements that will come from this refactor. Thank you to everyone who has contributed to the project so far, and I encourage everyone to continue contributing and providing feedback as we move forward with this refactor. Together, we can make this project even better and more enjoyable for everyone who uses it. Let's keep up the great work and continue to push the boundaries of what we can achieve with this project. Thank you again for your support and contributions, and I look forward to seeing the amazing things that we will accomplish together in the future. Let's keep up the momentum and continue to make this project the best it can be. Thank you all for your hard work and dedication, and let's keep pushing forward with this refactor and the exciting improvements that it will bring to the project. Together, we can make this project even better and more enjoyable for everyone who uses it. Let's keep up the great work and continue to push the boundaries of what we can achieve with this project. Thank you again for your support and contributions, and I look forward to seeing the amazing things that we will accomplish together in the future. Let's keep up the momentum and continue to make this project the best it can be. <em>2026-06-19T17:40:23-05:00</em> - Docs: Update CHANGELOG.md <em>2026-06-19T17:32:53-05:00</em> - [ui] Add ncurses UI backend <em>2026-06-19T12:30:07-05:00</em> - Doc - CHANGELOG <em>2026-06-19T12:27:51-05:00</em> - Doc: Updated CHANGELOG.md <em>2026-06-19T08:46:53-05:00</em> - view_engine.c: Correct error in panel stack updates. <em>2026-06-18T22:25:54-05:00</em> - The panels feature of NCurses has slightly different requirements for refreshing and updating pads. It is not difficult, but anywhere it is not handled, a blank pad view will be displayed. I will try to catch all of those occurrences and apply fixes. <em>2026-06-18T14:56:13-05:00</em> - After search, View was not displaying its pad_view window, so I added prefresh pad, update_panels, and doupdate() to search function. This assures synchronization between the physical screen and the virtual screen after updating the panels and pad. <em>2026-06-18T00:04:04-05:00</em> - src/lf.c (lightweight find): lf's "-Ho" (hidden files only) option caused directories that were not hidden to be rejected before placing them on the work queue. This meant that lf would not descend into those directories, and thus would not find any hidden files within them. This commit changes the order of the checks so that directories are added to the work queue before checking if they are hidden. This allows lf to descend into all directories, but only display hidden files when the "-Ho" option is used. <em>2026-06-17T15:41:15-05:00</em> - Documentation Updates <em>2026-06-17T14:19:26-05:00</em> - Documentation Updates <em>2026-06-17T13:31:08-05:00</em> - src/lf.c (lightweight file finder): added option "-Ho" to include only hidden files. <em>2026-06-17T13:00:39-05:00</em> - Documentation Updates <em>2026-06-17T12:34:44-05:00</em> - Finally, the recent window management upgrades are coming together. The codebase has been refactored from the old 2 plane (y and x) windowing system that was becoming increasingly difficult to maintain. NCurses panels, along with derived windows and pads not only provides a z axis stack, but does much of the heavy lifting for window management, including handling of overlapping windows, input focus, and efficient redrawing. This refactor has allowed for a significant reduction in code complexity, as well as improved performance and maintainability. The new system is more modular, making it easier to add new features and fix bugs in the future. Overall, this refactor has been a major step forward in improving the window management capabilities of the application, and it sets a solid foundation for future enhancements. <em>2026-06-17T00:03:28-05:00</em> - Continuing bug fixes related to refactoring window management. <em>2026-06-16T17:43:34-05:00</em> - Finally, the flickering is gone. I do know why it was happening, but that was among the easiest things to fix. The difficult part is becoming familiar with a whole new way managing windows with a hierarchy of panels and derived windows. It is clear to me that the old way I was managing windows was becoming unwieldy and C-Menu must be able to scale to achieve its ambitions. I apologize for the bugs, and I expect there will be more as I go through the codebase and refactor it to use panels. I have been testing the changes as I go, but I have not been able to test every possible combination of windows and panels. I have been testing the changes on Linux, and I expect there will be some issues on Windows and MacOS. I will do my best to fix any issues that arise, but I would appreciate any help from the community in testing and reporting bugs. <em>2026-06-15T23:42:56-05:00</em> - Documentation Update <em>2026-06-15T23:37:06-05:00</em> - Beware: There are still bugs in this release as the most recent feature additions involved a complete rewrite of the window management system. Please report any bugs you find to the issue tracker BillWaller/C-Menu on GitHub. If you have any questions about the new features, please ask in the discussions section of the same repository. Thank you for your support and happy menuing! <em>2026-06-15T20:40:13-05:00</em> - Documentation Updates <em>2026-06-15T20:34:06-05:00</em> - Combined Pick and View to create a File Browser. <em>2026-06-13T22:25:47-05:00</em> - Documentation Updates <em>2026-06-13T22:22:42-05:00</em> - Documentation Updates <em>2026-06-13T22:20:13-05:00</em> - Documentation Updates <em>2026-06-13T22:18:08-05:00</em> - Documentation Updates <em>2026-06-13T22:12:31-05:00</em> - Documentation Updates <em>2026-06-13T22:00:31-05:00</em> - Documentation updates <em>2026-06-13T19:38:06-05:00</em> - Minor bug in pick_engine.c fixed. <em>2026-06-13T17:05:11-05:00</em> - Mini bug in Build documentation. <em>2026-06-13T17:01:18-05:00</em> - Synchronized the build instructions in the documentation with the actual build system. Updated the CMakeLists.txt and Makefiles to reflect the changes in the build process. Removed the outdated README.md file from the docs directory as it is no longer relevant. <em>2026-06-13T15:49:48-05:00</em> - Several bug fixes related to panels upgrade. <em>2026-06-12T22:23:18-05:00</em> - Documentation Updates <em>2026-06-12T21:41:53-05:00</em> - The latest tranche of changes to As C-Menu is likely to be the most significant yet, in terms of what it will bring to C-Menu in the form of scalability as it gears up for tackling more sophisticated applications. The changes include reorganizing the window structure with NCurses Panels to make it much easier to introduce new features while improving resilience and maintainability. As C-Menu grew to a staggering 10,000 lines of code, it became clear that the original window structure was too rigid and made it difficult to implement new features without breaking existing functionality. The new window structure allows for more modular and reusable code, making it easier to add new features and maintain the codebase. Additionally, the new structure allows for better performance and scalability, as it can handle larger and more complex applications without sacrificing performance. Overall, these changes are a significant step forward for As C-Menu as it continues to grow and evolve as a powerful and flexible application development toolkit. <em>2026-06-12T01:11:44-05:00</em> - lf had an error that caused sort to fail. <em>2026-06-11T18:03:14-05:00</em> - Brought both Makefiles to synch, and removed the old build scripts. Both Makefile and CMakeLists.txt now support the same targets, and the Makefile is now a GNU Makefile, which is more portable and has better support for parallel builds. The old build scripts were redundant and not well maintained, so they have been removed to simplify the build process. The .gitignore file has been updated to ignore the new build artifacts generated by the Makefile and CMakeLists.txt, such as the compile_commands.json and install_manifest.txt files. This should help keep the repository clean and prevent unnecessary files from being committed. Overall, these changes should improve the build process and make it easier for developers to build and maintain the project. <em>2026-06-11T16:06:06-05:00</em> - Modified the Makefile (GNU) to produce 3 binaries for rsh. "rsh" is dynamically linked, "rsh_static" is statically linked, and "rsh_pam" is dynamically linked with PAM support. The reason for doing so is that you have different requirements depending on the use case, and many developers and administrators have a variety of use cases. For rescue environments, a statically linked binary is often preferred because it does not rely on shared libraries that may not be available. For regular use, a dynamically linked binary is more common and can take advantage of shared libraries for better performance and smaller size. For environments that require PAM support, having a separate binary allows users to choose the appropriate version based on their needs without having to recompile the entire project. This approach provides flexibility and caters to a wider range of use cases while maintaining the integrity of the project. It gives you a selection of tools so you always have the right one for the job. <em>2026-06-11T15:17:33-05:00</em> - Several bug fixes and improvements to the build system, including: Brought the C-Menu build up to date, adding conditional builds for a static executable and PAM support. To build static rsh with CMake, cd to src, and type: cmake -DCMAKE_BUILD_TYPE=Release -DRSH_STATIC=ON . To build rsh with PAM support, cd to src, and type: cmake -DCMAKE_BUILD_TYPE=Release -DRSH_PAM=ON . Then make and make install as usual. Static rsh and rsh with PAM support have vastly different use cases, and it doesn't make sense to build PAM support into a static rsh binary, so these options are mutually exclusive. We may add a CMake option to build both types of executable in a single build in the future, but with different names. The static binary is 3.3 MB compared to 20 KB for dynamic. <em>2026-06-10T15:54:58-05:00</em> - Modified view_engine.c to allow clipping text with mouse. Added horizontal scroll default shift width, which can be overridden by entering a shift width before right or left arrow keys. Shift width sticky and doesn't change until you enter a different shift width before pressing left or right arrow keys. <em>2026-06-09T22:02:15-05:00</em> - Bug fixes and Documentation Updates <em>2026-06-09T15:32:35-05:00</em> - Documentation Updates <em>2026-06-09T15:01:34-05:00</em> - Documentation Updates <em>2026-06-09T14:48:11-05:00</em> - Documentation Updates <em>2026-06-09T14:09:44-05:00</em> - Testing, catching edge cases and improving the overall user experience. This includes refining the color schemes, enhancing the configuration options, and ensuring better compatibility across different environments. The new theme script allows users to easily create and apply custom themes, while the updated documentation provides clearer guidance on how to utilize these features effectively. Additionally, various bug fixes and performance optimizations have been implemented to ensure a smoother and more responsive interface. <em>2026-06-09T12:32:26-05:00</em> - Documentation Updates <em>2026-06-09T12:22:03-05:00</em> - Documentation Updates <em>2026-06-09T10:23:29-05:00</em> - In previous testing, I had commented out the code that restored ncurses windows after executing a command. Therefore, the windows were not being restored after executing a command. Fixed that. My wife said the problem is the loose nut on the keyboard. <em>2026-06-08T21:34:49-05:00</em> - Documentation Updates <em>2026-06-08T21:22:30-05:00</em> - Documentation Updates <em>2026-06-08T21:21:38-05:00</em> - Documentation Updates <em>2026-06-08T19:35:54-05:00</em> - Documentation Upodates <em>2026-06-08T19:23:31-05:00</em> - Added code to load and apply themes instantly without restarting the application. This includes changes to the Makefile, detach, dwin.c, futil.c, include/cm.h, include/common.h, include/pick.h, init.c, mem.c, and pick_engine.c. Additionally, updated the README.md and themes.png to reflect the new theme functionality. <em>2026-06-08T11:25:23-05:00</em> - Added detach command to the Makefile, which allows the user to detach a process from the terminal and run it in the background. The detach command is implemented in the src/detach.c file, which uses the fork() and setsid() system calls to create a new process that is detached from the terminal. <em>2026-06-08T11:04:46-05:00</em> - Documentation Updates, bug fixes. <em>2026-06-07T20:37:51-05:00</em> - Modified init.c to load themes from the themes directory. Added a new script to list themes and another to change themes. Added some themes. Modified init.c to include descriptive comments from argp when writing configuration files. <em>2026-06-06T23:55:43-05:00</em> - Move C-Menu/src/test to C-Menu/src/work <em>2026-06-06T20:56:32-05:00</em> - Themes <em>2026-06-06T20:31:06-05:00</em> - Themes <em>2026-06-06T19:32:00-05:00</em> - Added selection to the C-Menu example main menu, which will start an independent instance of C-Menu in a new terminal window. This is an example of the flexibility of C-Menu, and how it can be used to create multiple menus that can be launched from each other. The new menu is a copy of the main menu, but it can be modified independently to show different options or information. This demonstrates how C-Menu can be used to create complex menu systems with multiple levels and branches, allowing for a more dynamic and interactive user experience. The changes include modifications to the configuration files for the Green, Red, and default themes, as well as changes to the main.m file to add the new menu option and launch the new menu in a new terminal window. Overall, this update enhances the functionality and versatility of the C-Menu example, making it a more powerful tool for creating custom menu interfaces. <em>2026-06-06T18:17:22-05:00</em> - Modified config file ( /menuapp/.minitrc) processing to accommodate comments on configuration lines. This allows users to add comments to their configuration files without breaking the parsing logic. The changes include updating the parsing function to ignore any text following a comment character (e.g., '#') on a line, ensuring that only the actual configuration settings are processed. This enhancement improves the usability of the configuration files by allowing users to document their settings directly within the file. <em>2026-06-06T14:26:49-05:00</em> - Added menu selection to select C-Menu theme. Corrected an error in the C-Menu Kitty theme selector. Added Selections Processed message to Pick. <em>2026-06-06T01:28:57-05:00</em> - After adding so many new features in the past month, I expected lots of bugs, but it hasn't been as bad as I thought. And the bugs are getting easier to fix as the codebase nears the end of the 0.2.9 cycle. I have a few more features to add, and I think the next release will be a good one. The new themes are really nice, and I think users will like them. I did find a significant error in lf file type handling, but that is fixed in this commit. <em>2026-06-05T16:09:14-05:00</em> - Added new colors for the themes, added a new theme, and made some minor adjustments to the code to make it more efficient and easier to read. Also updated the README.md file to reflect the changes made to the themes and the new features added. <em>2026-06-05T02:53:32-05:00</em> - menuapp updates <em>2026-06-05T02:50:31-05:00</em> - Added color, brackets_fg. <em>2026-06-05T02:13:08-05:00</em> - Makefile and documentation update <em>2026-06-04T16:47:02-05:00</em> - Preview of RSH certificate screenshot added to README.md <em>2026-06-04T16:35:17-05:00</em> - General cleanup and update of the C-Menu example application directory. <em>2026-06-04T16:26:41-05:00</em> - Makefile added help, config, and manifest. Added $CMENU_HOME/lib64 to RPATH. RPATH is very useful in a development environment where you may have several versions of a library installed. As C-Menu becomes more mature, we will likely remove the RPATH and rely on the user to set their LD_LIBRARY_PATH. But for now, this makes it easier to test new versions of the library without having to worry about the system version of the library. <em>2026-06-04T14:01:35-05:00</em> - Added optional manifest display at end of Makefile. Activate by setting DISPLAY_MANIFEST to 1 in the Makefile. Deactivate by setting it to 0. This is useful information for debugging and development, but has no effect on the final product. It is not intended for end users, and may be removed in future versions. <em>2026-06-04T11:01:58-05:00</em> - Corrected error in parse_menu_desc.c so that choice letters designated with "-" are properly reserved, preventing some letters from occurring more than once in a menu. Also updated cmenu manual page to explain the handling of input and output pipes in direct execution mode. <em>2026-06-04T00:25:45-05:00</em> - Substituted native linux install command for the inst.sh script in the Makefile in the interest of standardization and convenience of developers who are familiar with the native linux install command. <em>2026-06-03T16:10:14-05:00</em> - Added color definition for Form's fill character, fill_char_fg. Fixed artifact from previous commit that caused Form fields not to update properly. <em>2026-06-03T10:55:46-05:00</em> - Documentation Updates <em>2026-06-03T09:12:46-05:00</em> - Add manual page for rsh. <em>2026-06-03T09:09:17-05:00</em> - Documentation Updates <em>2026-06-02T20:35:44-05:00</em> - Documentation Updates, Unicode and wide character processing in form. <em>2026-06-01T14:17:30-05:00</em> - Added a new menu command type, "dexe", which detaches from the current process and executes a command. This allows for running simultaneous concurrent processes without blocking the menu system. The implementation involves changes to the command execution logic, menu description parsing, and the menu engine to support this new command type. <em>2026-06-01T10:59:47-05:00</em> - Documentation Updates <em>2026-06-01T10:53:26-05:00</em> - lf manual page <em>2026-06-01T10:42:32-05:00</em> - Add lf manual link to README.md <em>2026-06-01T10:36:20-05:00</em> - Remove spurious line in lf. <em>2026-06-01T10:23:57-05:00</em> - Added lf manual page, updated lf help files, screenshots, and the Makefile to include a section to build and install manual pages. <em>2026-05-31T13:22:18-05:00</em> - Documentation Updates <em>2026-05-31T13:18:20-05:00</em> - Documentation Updates <em>2026-05-31T00:32:22-05:00</em> - Documentation Updates <em>2026-05-30T23:05:58-05:00</em> - Documentation Updates <em>2026-05-30T21:17:21-05:00</em> - Documentation Updates <em>2026-05-30T18:26:11-05:00</em> - Various and sundry cleanup and fixes. <em>2026-05-30T14:04:02-05:00</em> - Documentation Updates <em>2026-05-30T13:35:07-05:00</em> - Corrected bug in Form command processing <em>2026-05-29T23:46:22-05:00</em> - Documentation Updates <em>2026-05-29T20:52:04-05:00</em> - Documentation Updates <em>2026-05-29T20:17:31-05:00</em> - Menu application directory general cleanup. Added Main Menu selection to edit menu description files. <em>2026-05-29T15:38:44-05:00</em> - Cleaned up lf "-D1" output. <em>2026-05-28T22:36:28-05:00</em> - Documentation Updates <em>2026-05-28T22:21:42-05:00</em> - Documentation Updates <em>2026-05-28T18:25:20-05:00</em> - Testing the new help system and adding a few screenshots to the docs. <em>2026-05-28T00:39:26-05:00</em> - Documentation Updates <em>2026-05-28T00:12:12-05:00</em> - Applied changes to test program C-Menu/test/iso8601.c. <em>2026-05-27T23:50:23-05:00</em> - Documentation Updates <em>2026-05-27T21:45:54-05:00</em> - Documentation Updates <em>2026-05-27T21:19:03-05:00</em> - Resolved lf date/time issues with Co-Pilot's help. The date/times at issue were the after and before date/times defining the range of files to be included in lf's output. I discovered this issue using the "-D18" option, which reveals the date/time information captured from the command line. The option processing code captured the date/times entered, but the verification date/times printed in init_find were off by by an hour for date/times in the CDT domain. The problem was that tm1_isdst must be initialized to -1 before calling mktime, which is used to convert the date/time information into a time_t value. By setting tm1_isdst to -1, mktime can correctly determine whether daylight saving time is in effect for the given date/time, which resolves the issue with the date/time being off by an hour. After making this change, the date is now correctly formatted and displayed in the application. This fix ensures that users will see the correct date information without any formatting errors. <em>2026-05-27T19:56:59-05:00</em> - Documentation Updates <em>2026-05-27T19:51:29-05:00</em> - Documentation Updates <em>2026-05-27T19:48:01-05:00</em> - Bug fixes and documentation updates. <em>2026-05-27T11:28:01-05:00</em> - I suspended organized testing during the last tranche of feature additions and improvements in the interest of expedient completion. As a result, I have a backlog of testing. I am adding more test cases to ensure that the code is robust and can handle a wide variety of operating conditions. This commit fixes several issues exposed by examining the output of lf using the "-D18" option to verify option processing. I will continue to test and fix any bugs that I find, and add more test cases to ensure that the code is robust and can handle a wide variety of inputs and scenarios. I am committed to ensuring that the code is of high quality and meets the needs of users, and I will continue to work diligently to achieve that goal. Thank you for your patience and support as I continue to improve the code and add more features. <em>2026-05-26T17:33:04-05:00</em> - Clean-up following scan-build report. lf: Corrected thread number calculation. <em>2026-05-26T12:56:26-05:00</em> - Switching back to alternate screen buffer after running nvim as a subprogram. This is to deal with screen buffer corruption when exiting C-Menu after running nvim as a subprogram. <em>2026-05-26T11:55:01-05:00</em> - lf: fixed error in argument processing, which could cause regular expression failure and SIGSEGV (core dumped) <em>2026-05-25T22:30:18-05:00</em> - Update C-Menu application directory <em>2026-05-25T21:42:45-05:00</em> - lf: corrected issues with exclusion regex leading to SIGSEGV <em>2026-05-25T17:49:37-05:00</em> - Documentation Updates <em>2026-05-25T16:04:43-05:00</em> - Menu: Due to some menu's running out of key characters that make sense, I have removed the restriction on lower case letters and some special characters. The characters "!" through " " (0x21 - 0x7e) are now valid key characters. Menu uses a rudamentary algorithm to determine the key character for a menu item. It scans the menu text for the first character that is not a space, not already reserved, and in the valid key character range. If no such character is found, Menu will select the first unreserved letter in the valid range, even though it may not be in the menu text. You may specify any character by including it immediately (no space separation) after a dash ("-") as the first non-blank character in the the menu item text. Lower case ("q") is always reserved for the hidden "Quit", "Exit", "Return", etc. menu item. As an additional visual queue, key characters in the menu text will be displayed using "nt_hl_rev_fg" and "nt_hl_rev_bg" color pair. These colors are defined as six-digit hex RGB values in the C-Menu configuration (normally /menuapp/.minitrc). <em>2026-05-25T10:27:08-05:00</em> - Added color definitions to specify reverse and highlight for Menu items. These are nt_fg, nt_bg, nt_hl_fg, nt_hl_bg, nt_hl_rev_fg, nt_hl_rev_bg, where nt is for normal text, hl is highlighted, rev is reverse, and fg for background and bg for background. <em>2026-05-22T13:44:36-05:00</em> - lf: Continuing optimizations and enhancements <em>2026-05-20T20:24:01-05:00</em> - lf: Continuing performance enhancements and adding tests <em>2026-05-19T23:41:23-05:00</em> - lf: added several features and performance enhancements <em>2026-05-19T02:04:51-05:00</em> - lf: continuing performance improvements, added features <em>2026-05-17T20:01:19-05:00</em> - Documentation Updates <em>2026-05-17T18:54:22-05:00</em> - Experimental feature additions and optimizations. <em>2026-05-16T14:36:38-05:00</em> - Documentation Updates <em>2026-05-16T14:04:47-05:00</em> - CHANGELOG updates <em>2026-05-16T13:45:35-05:00</em> - lf: Attempts to integrate mmap into lf resulted in degraded performanc. As a result, the mmap implementation has been removed and the previous file handling method has been restored. This change aims to improve the overall performance of lf while maintaining its functionality. <em>2026-05-14T23:01:43-05:00</em> - Documentation Update <em>2026-05-14T22:51:11-05:00</em> - lf performance tuning <em>2026-05-14T14:36:56-05:00</em> - lf corrected conditionals grouping errors in file type deselector <em>2026-05-13T23:25:03-05:00</em> - Further lf optimizations and Documentation updates <em>2026-05-13T01:34:28-05:00</em> - lf performance tuning <em>2026-05-12T13:22:03-05:00</em> - Documentation Updates <em>2026-05-12T13:01:06-05:00</em> - lf performance tuning. Set default number of threads to 6 if available. Added -T option to specify number of threads. Using more threads isn't always better, and can actually decrease performance, I have 16 threads available, but testing showed that 6 threads gave the best performance. Use the time command and pay most attention to real time, not user or system time. You can specify the number of threads you want to use with the -T option if you want to experiment with it. lf checks the number of threads available on the system on the system and limits the user setting accordingly. lf's -D (debug) option displays the number of threads being used. <em>2026-05-12T01:09:47-05:00</em> - lf: include directory names by default <em>2026-05-12T01:07:11-05:00</em> - lf: corrected error in finder loop <em>2026-05-11T23:51:01-05:00</em> - Documentation Updates <em>2026-05-11T01:02:51-05:00</em> - Documentation Updates <em>2026-05-11T00:51:37-05:00</em> - lf default was to follow symbolic links to directories. New default is to not follow symbolic links to directories. The -L option has been added to follow symbolic links to directories. <em>2026-05-10T23:45:39-05:00</em> - Documentation Updates <em>2026-05-10T17:28:09-05:00</em> - lf: Changed default to exclude hidden files, removed -n option to exclude hidden files, and added the -H option to include hidden files. Updated the help file and screenshot accordingly. <em>2026-05-10T11:44:15-05:00</em> - lf: tidying up the coded added for concurrent directory processing. Further benchmark testing indicates the concurrent directory processing provides the expected performance gains, and in all cases so far, C-Menu's lf finder is outperforming fd and find, and in some cases significantly so. <em>2026-05-10T00:13:48-05:00</em> - Added concurrent directory processing to lf using a thread pool and a worker to manage thread queues. Threads are mutex protected to ensure safe access to shared resources. The implementation includes a thread pool for efficient task management and a worker to handle the distribution of tasks among threads. This enhancement allows for faster processing of directories by utilizing multiple threads concurrently, improving the overall performance of the lf application. The changes include modifications to the Makefile, the addition of thread management code in futil.c, and updates to the header file cm.h to support the new threading functionality. The documentation has also been updated to reflect these changes. <em>2026-05-08T08:27:52-05:00</em> - Documentation Updates <em>2026-05-08T00:31:43-05:00</em> - Documentation Updates <em>2026-05-07T17:43:37-05:00</em> - Documentation Updates <em>2026-05-07T15:05:15-05:00</em> - Identified a logic error in lf that was causing it to recurse into lf_process for regular files. This induced quite a performance penalty on lf because lf_process was being called for all files, regardless of whether they were directories or not. The fix was to rearrange the comparisons of the controlling if statement. This prevents the unnecessary recursion and allows lf to function correctly when processing regular files. <em>2026-05-07T00:01:50-05:00</em> - Documentation Updates <em>2026-05-06T23:59:56-05:00</em> - Documentation Updates <em>2026-05-06T23:33:43-05:00</em> - Added -S (sort) option to lf. -Sr sorts in reverse order. <em>2026-05-06T12:22:08-05:00</em> - Documentation Updates and minor bug fixes <em>2026-05-05T18:39:49-05:00</em> - amort, the executable receiver for the Form example only had the format yyyy-mm-dd specified in strptime, and the default output of Form is unformatted without the "-". As a reault the amortization View output had incorrect dates. Added a second format, Yyyymmdd, to make it more robust and it's working now. <em>2026-05-05T18:19:27-05:00</em> - Documentation Updates <em>2026-05-05T18:06:35-05:00</em> - Reworked form_engine exec_receiver_cmd to make it more robust like pick. Added simple amortization program to demonstrate Form's -R execute_receiver_cmd functionality <em>2026-05-05T10:22:39-05:00</em> - Form was failing to display field brackets. Assumed it was either an error in ncurses or a loose nut on my computer and rearranged placements of wnoutrefresh calls to manipulate screen updates in an order that worked. <em>2026-05-05T00:48:48-05:00</em> - Documentation Updates <em>2026-05-04T20:59:35-05:00</em> - Documentation Updates <em>2026-05-04T19:32:32-05:00</em> - popups.c remove superfluous new_form <em>2026-05-04T18:51:33-05:00</em> - Documentation Updates <em>2026-05-04T18:45:37-05:00</em> - Documentation Updates <em>2026-05-04T17:22:00-05:00</em> - Documentation Updates <em>2026-05-04T17:09:03-05:00</em> - Documentation Updates <em>2026-05-04T17:04:54-05:00</em> - form_fields.c pressing escape in field editor resulted in endless loop. Added validation for printable ASCII characters to prevent this. Documentation Updates <em>2026-05-03T17:49:43-05:00</em> - Documentation Updates <em>2026-05-03T11:53:19-05:00</em> - Documentation Updates <em>2026-05-03T10:55:25-05:00</em> - Documentation Updates <em>2026-05-03T00:43:48-05:00</em> - Documentation Updates <em>2026-05-03T00:36:47-05:00</em> - pick_engine.c: remove toggle selection on enter key <em>2026-05-02T23:15:34-05:00</em> - Documentation Updates <em>2026-05-02T23:14:15-05:00</em> - Documentation Updates <em>2026-05-02T23:08:18-05:00</em> - Documentation Updates <em>2026-05-02T22:58:53-05:00</em> - Documentation Updates <em>2026-05-02T21:39:57-05:00</em> - Documentation Updates <em>2026-05-02T15:27:56-05:00</em> - Documentation Updates <em>2026-05-01T20:19:52-05:00</em> - Documentation Updates <em>2026-05-01T19:06:41-05:00</em> - Documentation Updates <em>2026-05-01T19:05:08-05:00</em> - Documentation Updates <em>2026-05-01T14:00:49-05:00</em> - Documentation Updates <em>2026-04-30T22:36:52-05:00</em> - Documentation Updates <em>2026-04-30T15:14:08-05:00</em> - Documentation Updates <em>2026-04-30T13:52:08-05:00</em> - Added screenshots to Rustlings exercises and updated the exercises.md file to reflect the changes. The new screenshots show the output of the exercises after completing them, while the old screenshots have been removed as they were outdated. The exercises.md file has been modified to include the new screenshots and to provide a better visual representation of the exercises. This update will help users understand the expected output of the exercises and make it easier for them to follow along with the Rustlings course. <em>2026-04-30T11:50:08-05:00</em> - Remove hard-coded paths from main.m <em>2026-04-30T10:56:50-05:00</em> - Provide tilde expansion for external commands. <em>2026-04-29T20:58:43-05:00</em> - Documentation Updates <em>2026-04-29T11:50:13-05:00</em> - Documentation Updates <em>2026-04-28T10:03:14-05:00</em> - Documentation Updates <em>2026-04-28T08:46:19-05:00</em> - Added "Tab Pick" and "Tab Edit" to chyron. <em>2026-04-27T23:58:27-05:00</em> - pick_engine: accept line editor field on enter key <em>2026-04-27T22:11:28-05:00</em> - pick_engine: pick->tbl_pages calculation is correct in line editor main loop. Also fixed updating of pick->tbl_pages on info line. <em>2026-04-27T21:52:17-05:00</em> - pick_engine: fixed pick->tbl_pages calculation <em>2026-04-27T16:59:55-05:00</em> - Fixed fork_exec root shell. Fixed spurious mouse click in object selection window triggering selection of the first object in the list. <em>2026-04-27T12:30:40-05:00</em> - pick_engine revert search term to previous state if change would result in match failure <em>2026-04-27T07:45:11-05:00</em> - Removed spurious setting of pick->d_cnt in pick_engine.c, which was causing the pick engine to display only the first page of objects. <em>2026-04-26T20:06:43-05:00</em> - Fix child processes inheriting stderr and corrupting ncurses display. <em>2026-04-26T17:57:35-05:00</em> - Before all execvp calls, redirect stderr to /dev/null to prevent corruption of ncurses windows. <em>2026-04-26T16:19:33-05:00</em> - Redirect child output to /dev/null after fork and before execvp to prevent the child from corrupting the ncurses display. Fixes a bug where the child process could write to the terminal and mess up the display of the parent process. <em>2026-04-26T13:08:07-05:00</em> - pick_engine: minor cosmetic update <em>2026-04-26T12:33:55-05:00</em> - pick_engine: track number of pages <em>2026-04-26T10:13:09-05:00</em> - Pick Engine: Turn cursor off in inactive window <em>2026-04-25T20:54:11-05:00</em> - lf: correcting issues with arguments <em>2026-04-25T20:02:21-05:00</em> - if lf cannot validate the first positional argument as directory, but determines it is a valid regular expression, it should also check the second positional argument, and if it is a valid regular expression, reject the first positional argument. <em>2026-04-25T19:38:57-05:00</em> - Fixed failure of lf to detect symlink to valid directory. <em>2026-04-25T16:28:57-05:00</em> - Pick Engine: refinement of information display. <em>2026-04-25T15:55:03-05:00</em> - Pick Engine: added line and page numbers to separator line. <em>2026-04-25T15:00:16-05:00</em> - Pick Engine, window width error. <em>2026-04-25T08:34:46-05:00</em> - Pick Engine: Accept mouse clicks from line editor window when object selector is active. <em>2026-04-25T08:10:28-05:00</em> - Increase width of Pick Window to accommodate chyron. <em>2026-04-24T19:05:01-05:00</em> - Pick Engine. Various improvements and bug fixes. <em>2026-04-24T10:54:24-05:00</em> - Documentation Updates <em>2026-04-24T10:01:18-05:00</em> - In menu.c, move _atexit() after curses initialization because _atexit() calls destroy_curses(). <em>2026-04-24T07:51:45-05:00</em> - Pick Engine set y_offset to 0 when not used. <em>2026-04-24T07:13:10-05:00</em> - Pick Engine line editor field positioning errors corrected. Added logic to make object selector and line editor cede control when a mouse click comes from other than their assigned window. <em>2026-04-23T22:15:56-05:00</em> - Documentation Updates <em>2026-04-23T22:03:00-05:00</em> - Documentation Updates <em>2026-04-23T20:37:41-05:00</em> - Documentation Updates <em>2026-04-23T10:09:01-05:00</em> - Pick_engine, fine tuning the odds and ends. <em>2026-04-23T09:28:41-05:00</em> - Fixed bug in Pick Engine. Pressing the page down key when there is only one page failed to set in_key to 0 resulting in endless loop. <em>2026-04-22T14:16:57-05:00</em> - Added wrefresh to line editor in Pick Engine. <em>2026-04-22T13:35:33-05:00</em> - Documentation Update <em>2026-04-22T13:31:24-05:00</em> - Adjusted Pick Engine box geometry to remove extra background line. <em>2026-04-22T10:51:17-05:00</em> - Pick Engine redisplay window 2 after displaying help. <em>2026-04-22T06:31:43-05:00</em> - Somehow lost wmouse_trafo() in dxwgetch, which caused the mouse to not work in dxwgetch. Reinstating it. <em>2026-04-21T21:22:02-05:00</em> - Documentation Updates <em>2026-04-21T19:48:21-05:00</em> - Continue fine tuning Pick Engine documentation and screenshots. <em>2026-04-21T16:33:35-05:00</em> - Documentation Updates <em>2026-04-21T16:07:17-05:00</em> - Continuing work on Pick Engine. <em>2026-04-21T15:38:29-05:00</em> - Reworked Pick Engine logic to be more efficient and handle edge cases better. Updated the user interface to provide clearer feedback on pick results. Refactored code for improved readability and maintainability. Added comments to explain complex sections of the code. <em>2026-04-21T10:02:11-05:00</em> - Update object cursor position. <em>2026-04-20T21:39:24-05:00</em> - Still more tuning on Pick Engine. <em>2026-04-20T21:21:03-05:00</em> - Continuing to fine tune the pick engine. <em>2026-04-20T17:17:32-05:00</em> - Fine tuning Pick's line editor. <em>2026-04-20T08:49:42-05:00</em> - Valgrind documentation update Merge: 1475850 5f7fa6d <em>2026-04-20T07:17:59-05:00</em> - Merge pull request #4 from BillWaller/copilot/fix-valgrind-still-reachable Fix Valgrind still-reachable leaks: free new_init() allocations, suppress ncurses internals <em>2026-04-20T03:28:42Z</em> - Fix Valgrind still-reachable leaks: free new_init allocs, add suppression file, Makefile target, and docs Agent-Logs-Url: https://github.com/BillWaller/C-Menu/sessions/79b9264f-614c-417f-b8d5-a1a6aab29c5f Co-authored-by: BillWaller <10166578+BillWaller@users.noreply.github.com> <em>2026-04-20T03:23:51Z</em> - Initial plan <em>2026-04-19T22:07:29-05:00</em> - Fixing valgrind errors. <em>2026-04-19T21:57:17-05:00</em> - Chasing down valgrind errors and fixing them. <em>2026-04-19T20:15:55-05:00</em> - Extensively reworked the Pick Engine to make it much more intuitive and easier to use. The new API is much more consistent and easier to understand, and the new implementation is much more efficient and easier to maintain. Specifically, a line editor has been added to the Pick Engine to allow users to enter search strings. The Pick Engine automatically filters the list of items displayed in real time, as you type. It's sort of like Telescope, except that it maintains distinct modes for the Picker and Editor to preserve the individual features and optimizations of each. As a result, Pick delivers a powerful multi-column, multi-page Picker and a full-function line editor. <em>2026-04-18T22:11:35-05:00</em> - Fixed bug in mem.c which was causing view to fail when reading input from a command line pipe. <em>2026-04-17T20:43:42-05:00</em> - Cleaning up possible memory leaks in lf.c and futil.c, and fixing a minor issue in the Makefile. <em>2026-04-17T15:06:30-05:00</em> - Complex characters must be initialized with proper wide character strings and mbstate must be initialized to zeros. <em>2026-04-17T07:22:04-05:00</em> - lf after and before date/time changes, and some refactoring to make the code more readable and maintainable. <em>2026-04-16T19:10:39-05:00</em> - lf -i does not have an argument. <em>2026-04-16T19:02:24-05:00</em> - Documentation Updates <em>2026-04-16T19:00:34-05:00</em> - Documentation Updates <em>2026-04-16T18:26:38-05:00</em> - Add -s, file_size, option to lf. For example, lf -t f -s 100k, will only list files greater than or equal to 100k. <em>2026-04-16T11:01:14-05:00</em> - Added after and before date ranges to lf. <em>2026-04-14T15:31:36-05:00</em> - Fixed bug in lf. Erroneously used continue where I should have suppressed. <em>2026-04-14T14:40:09-05:00</em> - Added -u, &ndash;user option to lf. Usage is -u user_name. I am trying to keep lf as simple as possible, but this seems like a pretty important capability. Also changed some instances of "-N f" to "-Nf" in the code. This became an error when I added a boolean argument to the -N option without removing the space between N and f. <em>2026-04-14T11:23:17-05:00</em> - Documentation Updates <em>2026-04-14T11:03:24-05:00</em> - After adding OPTION_ARG_OPTIONAL to the "-N" option of view, argp interpreted the "f" of "-N f" as a separate argument, causing C-Menu to fail as it tried to open "f" as a file". Reading the documentation for argp, this is normal and expected behavior. The solution, as suggested by the documentation, is to eliminate the space after the -N option. The scripts will be changed and the documentation will clarify that the -N option should be used without a space when providing an argument. I also ran across a problem caused by popup_view using the function arguments for line, col, begy, and begx, when command line arguments were also specified. The desired behavior os to override the function arguments with the command line arguments when they are provided. I have also modified the code to check for the presence of command line arguments and use them instead of the function arguments when they are available.

2026-04-13T18:39:03-05:00 - More minor fixes for View line numbering

2026-04-13T15:00:52-05:00 - Fine tuning line numbering toggle

2026-04-12T20:11:26-05:00 - Documentation Updates

2026-04-12T12:15:39-05:00 - Fixed View trying to open line number window when line number flag set to false.

2026-04-12T06:35:51-05:00 - More work on resizing View windows

2026-04-11T21:03:43-05:00 - Documentation Updates

2026-04-11T20:52:57-05:00 - Working on View window resizing. It's not perfect yet, but we are making progress. As always, if you have any suggestions or feedback, please let me know. I am open to any ideas that can help improve the resizing behavior and overall user experience. Thank you for your continued support and contributions to the project. Let's keep pushing forward and making this software better together!

2026-04-10T15:36:55-05:00 - Expand view line number window to 8 characters wide.

2026-04-10T14:17:15-05:00 - Expanded line number window to 7 digits. To accommodate more than 7 digits, we will need to allow scalinig of the line number window.

2026-04-10T13:45:35-05:00 - Corrected line numbering issue in view when scrolling up and then down.

2026-04-10T11:05:18-05:00 - Don't activate cursor after deleting a window

2026-04-10T11:00:49-05:00 - Erase and refresh stdscr after execvp()

2026-04-10T10:52:16-05:00 - Replace old submenu code with popup_menu()

2026-04-10T08:27:20-05:00 - Correct color rendition in view

2026-04-10T08:03:10-05:00 - set menu to init->menu to avoid SIGSEGV

2026-04-10T07:32:29-05:00 - Set background to NORMAL when deleting windows

2026-04-10T05:43:44-05:00 - Uncommented endwin() in destroy_curses() to prevent the terminal from being left in an unusable state if the program crashes.

2026-04-09T21:42:19-05:00 - Documentation Updates

2026-04-09T19:44:49-05:00 - Reset terminal on exit

2026-04-09T18:31:10-05:00 - Add atexit and end_pgm functions to menu.c to ensure proper cleanup of resources when the program exits. This will help prevent memory leaks and ensure that any necessary finalization steps are performed before the program terminates.

2026-04-09T18:14:55-05:00 - Taking care of valgrind issues. While I am working hard to chase down memory leaks, the fixes may have side-effects leading to other issues. Be assured, I am addressing all known issues as quickly as possible.

2026-04-09T15:20:01-05:00 - Fixed fastbin chunk detected

2026-04-09T15:16:08-05:00 - Valgrind fixes, and some other minor cleanups. See individual commits for details.

2026-04-09T11:31:35-05:00 - Off by one free error in destroy_view.

2026-04-09T11:21:46-05:00 - Fixed memory leak in view.

2026-04-08T23:49:19-05:00 - Minor fixes

2026-04-08T16:43:56-05:00 - Documentation Updates

2026-04-08T13:53:35-05:00 - Removed -a (List all files, including hidden) option from lf and added -n (Don't list hidden files) to conform with find's default of listing all files. The -n option is equivalent to find . -not -name ".*"

2026-04-08T13:10:19-05:00 - Changed lf default depth to unlimited, in conformance with find. lf did have a default depth of 3 because it was handy for initial testing. As it no longer serves a purpose, the default depth is 0, which means unlimited depth like find. My next quandry is whether to change the behavior of lf concerning hidden files. By default, lf ignores hidden files, while find includes them. I am leaning towards changing lf to include hidden files by default.

2026-04-08T10:22:38-05:00 - Documentation Updates

2026-04-08T10:18:31-05:00 - Documentation Updates

2026-04-08T08:22:56-05:00 - Documentation Updates

2026-04-08T07:17:06-05:00 - Fixed

2026-04-07T22:45:43-05:00 - Fixed errors in fork_exec().

2026-04-07T14:45:19-05:00 - Documentation Updates

2026-04-07T14:13:22-05:00 - Documentation Updates

2026-04-07T14:11:38-05:00 - Documentation Updates

2026-04-07T14:10:10-05:00 - Documentation Updates

2026-04-07T13:56:52-05:00 - Documentation Updates

2026-04-07T13:32:16-05:00 - Documentation Updates

2026-04-07T13:11:28-05:00 - Documentation Updates

2026-04-07T10:30:02-05:00 - Documentation Updates

2026-04-07T10:07:55-05:00 - Documentation Updates

2026-04-07T09:05:27-05:00 - Documentation Updates

2026-04-07T09:03:17-05:00 - Documentation Updates

2026-04-07T08:48:48-05:00 - Documentation Updates

2026-04-07T08:46:14-05:00 - Documentation Updates

2026-04-07T08:45:04-05:00 - Documentation Updates

2026-04-07T08:17:33-05:00 - Documentation updates.

2026-04-07T08:14:14-05:00 - Documentation Updates

2026-04-06T23:15:29-05:00 - Documentation updates.

2026-04-06T22:56:32-05:00 - Documentation Updates.

2026-04-06T22:54:15-05:00 - Documentation Updates

2026-04-06T22:14:49-05:00 - Documentation Updates

2026-04-06T21:36:45-05:00 - Update Installation Guide

2026-04-06T20:50:43-05:00 - Clean up script errors

2026-04-06T20:30:22-05:00 - Resolving issues between NCurses and Neovim handling of alternate and main screens related to smcup and rmcup. This commit includes changes to the Makefile, menu_engine.c, and pick_engine.c to ensure compatibility and proper handling of screen states in both environments.

2026-04-06T16:02:05-05:00 - Fixed several errors in scripts.

2026-04-06T15:27:18-05:00 - Documentation Updates.

2026-04-06T15:25:23-05:00 - Documentation updates.

2026-04-06T13:00:39-05:00 - Reworked menu_engine logic, added c23 standard to .clangd, made SIGSEGV handler messages more informative.

2026-04-05T23:11:28-05:00 - Fixed bug in waiting for process. Added confirmation of program execution.

2026-04-05T11:09:59-05:00 - Clear screen before execvp.

2026-04-04T20:55:16-05:00 - Cleaned up entry and exit for fork-exec executables and added checks for directories in workstation setup scripts.

2026-04-04T13:46:26-05:00 - Clear before execvp.

2026-04-04T13:41:24-05:00 - Clear artifacts from screen before and after fork_exec.

2026-04-04T09:43:01-05:00 - Documentation Updates

2026-04-04T04:58:54-05:00 - pick_engine - pick->obj_idx was being erroneously set to 0 in picker main loop.

2026-04-03T21:05:44-05:00 - Tuning some of the fine details.

2026-04-03T15:15:08-05:00 - When starting a full screen root shell from the main.m menu, the ncurses screen was not being cleared, and the root shell was being launched on top of the ncurses screen. This was because the clear() function was not being called before launching the root shell. To fix this issue, I added a call to clear() before launching the root shell in the main.m file. This ensures that the ncurses screen is cleared before the root shell is launched, providing a clean and clear interface for the user.

2026-04-03T12:00:28-05:00 - Added a complete user session with Form to the User Guide.

2026-04-03T00:14:36-05:00 - Update menuapp files.

2026-04-02T22:16:28-05:00 - Catching the edge cases now. I would love to have some help locating bugs so 0.2.9 can be wrapped up soon. I have been testing the new features and they seem to be working well, but as the designer, I am functionally fixed. If you have some time, please try out the latest version and make a list of things that don't work they way they should. I will be working on the list and trying to resolve as many of the issues as I can. I was a lead developer for many years, so I an no newby to criticism. I know what kinds of bugs live in the shadows of every software project. No one shapes a software product more than the early adopters. Theirs is perhaps the greatest contribution to great software.

2026-04-02T15:30:12-05:00 - Valgrinding and fixing some memory leaks and other minor issues. Also added some comments to the code for better readability.

2026-04-02T11:17:50-05:00 - My tree-sitter parser for shell scripts isn't working properly, so i removed the "sh" entries from source queries.

2026-04-02T11:12:31-05:00 - Fixed bug in form_engine related to F5 process.

2026-04-02T10:41:18-05:00 - Documentation update

2026-04-02T10:31:29-05:00 - Clean up screen artifacts after running various processes in C-Menu.

2026-04-02T09:20:13-05:00 - Prevent nvim from leaving artifacts on screen.

2026-04-02T08:10:42-05:00 - Added help files to Menu, Form, and Pick and cleaned up the code to display help.

2026-04-02T06:22:20-05:00 - Included form help file and fixed bug in form_engine.

2026-04-02T04:32:51-05:00 - Fixed bug in form engine help.

2026-04-01T22:06:10-05:00 - Documentation updates.

2026-04-01T21:56:46-05:00 - Documentation updates.

2026-04-01T21:32:26-05:00 - Documentation updates.

2026-04-01T21:23:32-05:00 - Documentation updates.

2026-04-01T21:21:31-05:00 - Documentation Updates

2026-04-01T17:03:45-05:00 - Tidy up the chyron a bit.

2026-04-01T15:09:50-05:00 - Further testing proved that "wchar_t wstr[2] = {L'\0', L'\0'};" will work for "setcchar(&cc, wstr, WA_NORMAL, cpx, nullptr);", so re-reverted to wstr.

2026-04-01T14:55:23-05:00 - Changing final setcchar(&cc, &wc, WA_NORMAL, cpx, nullptr) to setcchar(&cc, wstr, WA_NORMAL, cpx, nullptr) lost termination of cmplx_buf. Reverted back to scalar wc.

2026-04-01T14:03:13-05:00 - Replace all ocrrurences of scalar wc with wstr

2026-04-01T13:52:18-05:00 - Remove unnecessary code from whence

2026-04-01T11:21:52-05:00 - pick_engine.c - highlight selection when toggled on with mouse

2026-04-01T07:47:12-05:00 - Added wclrtoeol() at end of chyron

2026-04-01T07:43:02-05:00 - Removed extra space at end of chyron.

2026-03-31T19:56:36-05:00 - Added set_chyron_key_cp to insert/overwrite toggle switch in the field editor.

2026-03-31T19:35:38-05:00 - Added color pair to to set_chyron_key so that certain keys can be highlighted. This is used as a hint to the user as to the next logical key to press or click with the mouse.

2026-03-31T13:04:36-05:00 - Fixed bug in pick_engine related to argp processing. Essentially, argp provides all the non-option arguments to be captured in an array not including argv[0]. The getopt code returned an array of all arguments with an index to the first non-option argument. This caused the pick_engine code to fail when it tried to access the non-option arguments as it was accessing the wrong indices. The fix was to adjust the indices in pick_engine to account for the fact that argp does not include argv[0] in the array of non-option arguments. This should resolve the issue and allow pick_engine to function correctly with argp.

2026-03-30T18:39:10-05:00 - More clean-up and documentation updates.

2026-03-30T17:45:07-05:00 - Refactoring some function calls to use the new API, and removing some unused code.

2026-03-30T17:34:53-05:00 - Resolved more issues with argp conversion.

2026-03-30T14:24:41-05:00 - Incorporate argp into whence

2026-03-30T12:36:34-05:00 - Fixed another error resulting from switching to argp from getopt. There is nothing wrong with the argp library. These issues are solely my fault for not testing the code more thoroughly after switching to argp. I will be more careful in the future.

2026-03-30T11:28:14-05:00 - Fixed off-by-one error introduced by migration to argp in commit 9c8e5b1. The error caused the last argument to be ignored, which was the path to the form description file. This involved setting optind to state->next - 1 instead of state->next.

2026-03-29T23:56:02-05:00 - Fixed bugs related to upgrading from getopt to argp.

2026-03-28T19:16:54-05:00 - Switched from getopt to argp for better argument parsing and help message generation. This change improves the user experience by providing clearer usage instructions and more robust handling of command-line arguments. The new implementation also allows for easier maintenance and future enhancements to the argument parsing logic.

2026-03-28T06:55:01-05:00 - Documentation Updates

2026-03-27T23:20:38-05:00 - Documentation Updates

2026-03-27T23:13:53-05:00 - Documentation Updates

2026-03-27T20:40:11-05:00 - Delete C-Menu-0.2.9-Linux-x86_64.tar.xz Signed-off-by: Bill Waller billx.nosp@m.wall.nosp@m.er@gm.nosp@m.ail..nosp@m.com

2026-03-27T18:28:22-05:00 - Add files via upload Signed-off-by: Bill Waller billx.nosp@m.wall.nosp@m.er@gm.nosp@m.ail..nosp@m.com

2026-03-27T18:16:34-05:00 - Documentation Updates

2026-03-27T16:18:24-05:00 - Testing revealed some off-by-one errors in view. Fixed all that I know about.

2026-03-26T19:42:30-05:00 - Fixed menu calling popup_view instead of mview, which caused SIGSEGV on exit.

2026-03-26T18:17:48-05:00 - Making the build a little cleaner

2026-03-26T18:00:46-05:00 - view clrtobot at eod

2026-03-26T17:21:37-05:00 - Restore cursor at end of program

2026-03-26T17:11:28-05:00 - Cosmetic improvement to view

2026-03-26T17:05:30-05:00 - Removed artifacts from bottom line of line number window

2026-03-26T15:13:23-05:00 - Fixed several bugs arising from refactoring xwgetch() to expand its usefulness for managing wait states, synchronizing forked processes, and catching signals.

2026-03-26T00:04:43-05:00 - Refresh pad after selecting -n line numbering from command line

2026-03-25T21:46:50-05:00 - Refactor field input after xwgetch changes

2026-03-25T13:02:54-05:00 - Remove mview and updated CMakeLists.txt and Makefile

2026-03-25T12:35:54-05:00 - Removed unneeded source files menu.c, form.c, pick.c, view.c, and ckeys.c

2026-03-25T11:09:57-05:00 - Combined menu, form, pick, view, and ckeys into a single executable, main, which substitutes for menu, form, pick, view, and ckeys when executed via symbolic links of those same names to main. Created a module, popups.c, that contains function calls to menu, form, pick, view, and ckeys, which will function as pop-ups and drop-downs within the main executable.

2026-03-24T22:59:29-05:00 - Put #ifdefs in rsh to make SSH authentication and system logging optional.

2026-03-24T21:15:33-05:00 - Changelog Updates

2026-03-24T20:37:31-05:00 - RSH Activating SSH Authentication

2026-03-24T19:50:35-05:00 - Added ssh authentication and system logging to RSH

2026-03-24T12:13:05-05:00 - Documentation Updates

2026-03-24T11:04:45-05:00 - Fix view display_page clearing last line.

2026-03-24T10:54:59-05:00 - Get rid of flickering in view display_page by moving wclrtobot to after the last line is displayed.

2026-03-24T09:14:41-05:00 - Documentation Updates

2026-03-24T05:38:50-05:00 - Remove DEBUG from cm.h

2026-03-24T05:35:33-05:00 - Fine tuning of wait timing

2026-03-23T21:20:31-05:00 - Testing and debugging of the pick engine and the view initialization.

2026-03-23T19:44:43-05:00 - Resolve timing issues with pick and view engines

2026-03-23T19:28:06-05:00 - Synchronize forked processes

2026-03-23T18:03:28-05:00 - Update to init_view waiting display

2026-03-23T17:55:27-05:00 - Working with waiting pop-ups

2026-03-23T17:49:22-05:00 - Further work on the wait displays

2026-03-23T16:22:28-05:00 - Add -rdynamic option to debug builds

2026-03-23T16:04:39-05:00 - Fine tuning the timeout and fixing a bug.

2026-03-23T15:02:13-05:00 - Added pop-up wait message with countdown timer in view and pick while waiting for input from provider processes. Default timeout is 5 seconds.

2026-03-22T08:46:21-05:00 - Documentation Updates

2026-03-21T22:54:39-05:00 - Suppress "File of" if input is stdin

2026-03-21T15:01:00-05:00 - Documentation Updates

2026-03-21T11:50:11-05:00 - Documentation Updates

2026-03-21T00:11:08-05:00 - Toggle line numbers with "-n" in view

2026-03-20T22:35:52-05:00 - Documentation Updates

2026-03-20T22:10:32-05:00 - Documentation Updates

2026-03-20T13:50:45-05:00 - Documentation Updates

2026-03-20T09:06:11-05:00 - Documentation Updates

2026-03-20T08:50:16-05:00 - General clean-up of the code

2026-03-19T23:36:07-05:00 - Fixed bug in xwgetch that caused it to miss mouse clicks.

2026-03-19T21:37:22-05:00 - Fix bug in View vertical scrolling with mouse wheel

2026-03-19T21:19:15-05:00 - Fixed mouse wheel vertical scrolling in view_engine.

2026-03-19T14:49:02-05:00 - Documentation Updates

2026-03-19T14:41:26-05:00 - Documentation Updates

2026-03-19T14:36:17-05:00 - Documentation Updates

2026-03-19T14:32:05-05:00 - Documentation Updates

2026-03-19T14:30:49-05:00 - Documentation Updates

2026-03-19T14:21:47-05:00 - Documentation Updates

2026-03-18T22:59:34-05:00 - Fixed some logic errors in view related to page positioning.

2026-03-18T21:48:51-05:00 - Fine tuning the paging logic

2026-03-18T18:20:38-05:00 - Corrected Page Up logic in view

2026-03-18T14:24:44-05:00 - fixed Pick failing to operate on the last item in the object list. This was caused by an off-by-one error in the loop that iterates through the objects. The loop condition was checking for i < num_objects - 1 instead of i < num_objects, which caused it to skip the last object. This fix changes the loop condition to i < num_objects, allowing Pick to properly operate on all objects in the list, including the last one.

2026-03-18T13:39:29-05:00 - Close line number window properly to clear artifact

2026-03-18T10:57:07-05:00 - free data structures view->ln_tbl, view->ln_win

2026-03-17T23:02:47-05:00 - Documentation Updates

2026-03-17T22:50:19-05:00 - Added line number option (-N) to view command.

2026-03-14T11:32:38-05:00 - lf enhanced to selectively list any combination of 8 file types.

2026-03-12T21:14:40-05:00 - Documentation Updates

2026-03-12T20:57:41-05:00 - Documentation Updates

2026-03-12T18:12:54-05:00 - Documentation Updates

2026-03-12T18:10:16-05:00 - Documentation Updates

2026-03-12T00:20:24-05:00 - fixed bug in lf -a not showing hidden files

2026-03-10T17:23:07-05:00 - Documentation Updates

2026-03-10T16:30:40-05:00 - Documentation Updates

2026-03-10T16:29:27-05:00 - Documentation Updates

2026-03-10T16:24:39-05:00 - Documentation Updates

2026-03-10T14:37:53-05:00 - Documentation Updates

2026-03-10T14:34:33-05:00 - Documentation Updates

2026-03-10T09:30:41-05:00 - Documentation Updates

2026-03-10T07:59:40-05:00 - Prevent lf from following links

2026-03-09T17:55:46-05:00 - Modified scripts to sort output

2026-03-09T17:47:22-05:00 - Field editor refinements/cleanup

2026-03-09T12:00:35-05:00 - Removed intentional segmentation fault used for testing. This function was designed to verify that the program would core dump instead of continuing to run after a SIGSEGV interrupt and it functioned correctly, breaking the program as designed. It is a testing artifact not intended for production code.

2026-03-09T11:55:25-05:00 - Fixed bug in field editor insert mode.

2026-03-09T11:06:46-05:00 - Modified lf to use current directory instead of complaining if first non-option argument is not a valid directory.

2026-03-08T22:16:45-05:00 - Fixed problem with lf

2026-03-08T18:27:43-05:00 - Hopefully fixed stubborn bug in lf

2026-03-08T16:06:42-05:00 - Many bug fixes and improvements, including: integrating chyron into form and pick, fixing a long-standing bug in the form engine, improving the pick engine. Fixed another bug in lf.

2026-03-07T11:08:34-06:00 - Added section on lf

2026-03-07T10:01:54-06:00 - Documentation Updates

2026-03-07T09:14:31-06:00 - Corrected Pick KEY_DOWN behavior

2026-03-06T18:58:15-06:00 - Additions to Changelog

2026-03-06T18:15:43-06:00 - Upgraded the menuapp and src code with various modifications, including changes to the sddm_chbg.sh script, main.m file, and several C source files. Additionally, a new file diag.m was added to the menuapp/msrc directory, and an old file xx was deleted. These changes aim to enhance the functionality and performance of the application while maintaining compatibility with existing features. The chyron functions, which have been updated to handle mouse events, will now provide a more interactive user experience. The modifications in the form_engine.c and related files will improve the overall efficiency of the form handling process,while the updates in the include files will ensure better code organization and maintainability. Overall, these changes contribute to a more robust and user-friendly application, aligning with the project's goals and objectives.

2026-03-06T12:16:41-06:00 - Added incomplete message

2026-03-06T10:16:56-06:00 - Documentation Updates

2026-03-05T20:22:02-06:00 - Documentation Updates

2026-03-05T18:45:14-06:00 - Bug fixes, exercises, scripts and screenshots

2026-03-05T14:02:06-06:00 - Fixed bugs in menu and added exclusion regex to lf.

2026-03-03T21:16:58-06:00 - Documentation Updates

2026-03-02T14:25:58-06:00 - Replace NULL with nullptr

2026-03-01T19:58:26-06:00 - Pick failing to draw box window if no title

2026-03-01T09:18:23-06:00 - Documentation Updates

2026-03-01T09:16:23-06:00 - Documentation Updates

2026-02-28T13:55:51-06:00 - Documentation Updates

2026-02-28T13:53:30-06:00 - Documentation Updates

2026-02-27T21:55:31-06:00 - Perfect sub-window positioning

2026-02-27T21:52:15-06:00 - Documentation Updates

2026-02-27T20:29:01-06:00 - Code and Documentation inmprovements

2026-02-27T09:40:27-06:00 - Use new options with lf

2026-02-27T09:33:18-06:00 - Fixed another issue with lf

2026-02-27T08:50:16-06:00 - Fixed lf (list files)

2026-02-26T19:57:38-06:00 - Documentation Updates

2026-02-26T19:42:31-06:00 - Documentation Updates

2026-02-26T11:05:52-06:00 - Documentation Updates

2026-02-26T11:02:24-06:00 - Documentation Updates

2026-02-25T23:47:54-06:00 - Added Desktop startup files

2026-02-25T22:52:59-06:00 - Correct transposition of iso8601

2026-02-25T17:48:44-06:00 - Documentation Updates

2026-02-24T20:44:48-06:00 - Documentation Updates

2026-02-24T20:35:23-06:00 - Documentation Updates

2026-02-24T14:34:09-06:00 - Corrected search page-top, page-bottom positions

2026-02-24T12:59:37-06:00 - Corrected issue with lf -d, (depth)

2026-02-24T12:15:49-06:00 - Corrected problem with lf

2026-02-24T07:49:23-06:00 - Move chktty to bin

2026-02-24T07:47:19-06:00 - Documentation Updates

2026-02-23T16:03:24-06:00 - Added message if tty directory not found

2026-02-23T15:50:01-06:00 - View reverse search logic fixes

2026-02-22T16:39:57-06:00 - Make include directives more portable for API use

2026-02-22T16:20:25-06:00 - Correcting type-o

2026-02-22T16:07:16-06:00 - More work on CMake build system

2026-02-22T12:41:43-06:00 - Remove installed include and lib64 directories

2026-02-22T12:25:46-06:00 - CMake - update installation logic

2026-02-22T12:02:07-06:00 - Install CMenu.conf in ld.so.conf

2026-02-21T09:45:55-06:00 - Documentation Updates

2026-02-21T09:43:29-06:00 - Documentation Updates

2026-02-21T09:15:19-06:00 - View Window Geometry

2026-02-20T14:48:25-06:00 - Reworking View's search logic

2026-02-19T16:57:06-06:00 - Fixed problem with multi-byte conv. mbrtowc()

2026-02-19T12:27:28-06:00 - Documentation Updates

2026-02-19T11:44:46-06:00 - Documentation Updates

2026-02-18T20:15:00-06:00 - Added environment variable for static rsh build

2026-02-18T15:41:26-06:00 - Added option to statically link rsh

2026-02-18T12:11:31-06:00 - Corrected issue with View wrapping

2026-02-17T20:49:33-06:00 - Add .bashrc to .gitignore

2026-02-17T20:35:02-06:00 - Remove GH_TOKEN

2026-02-17T20:05:25-06:00 - Deleted GH_TOKEN from .bashrc

2026-02-17T20:03:14-06:00 - Logic correction in view write buffer to file

2026-02-16T20:20:44-06:00 - CMake Build install directory

2026-02-16T20:01:20-06:00 - Documentation Updates

2026-02-16T19:51:46-06:00 - Added logic for editing current buffer

2026-02-15T19:26:51-06:00 - Library versioning CMake and Makefile

2026-02-15T13:49:03-06:00 - Correct Misspelling in menu.m

2026-02-15T11:38:43-06:00 - Fix several programs that weren't expanding tilde

2026-02-15T10:01:33-06:00 - Documentation Updates

2026-02-13T22:37:54-06:00 - Documentation Updates

2026-02-13T21:40:17-06:00 - Documentation Updates

2026-02-13T21:19:00-06:00 - Documentation Updates

2026-02-13T21:17:27-06:00 - Documentation Updates

2026-02-13T21:12:22-06:00 - Documentation Updates

2026-02-12T23:07:57-06:00 - Documentation Updates

2026-02-12T22:53:24-06:00 - Documentation Updates

2026-02-12T19:27:52-06:00 - Improving Help display

2026-02-12T17:09:50-06:00 - Improved Signal Handling, Help mechanism

2026-02-11T18:53:32-06:00 - Documentation Updates

2026-02-11T18:49:57-06:00 - Documentation Updates

2026-02-11T18:39:58-06:00 - Documentation Updates

2026-02-11T18:02:41-06:00 - Documentation Updates

2026-02-11T18:07:44-06:00 - Add files via upload Signed-off-by: Bill Waller billx.nosp@m.wall.nosp@m.er@gm.nosp@m.ail..nosp@m.com

2026-02-11T18:06:14-06:00 - Add files via upload Signed-off-by: Bill Waller billx.nosp@m.wall.nosp@m.er@gm.nosp@m.ail..nosp@m.com

2026-02-11T15:38:26-06:00 - Update C-Menu API link to use HTTPS Signed-off-by: Bill Waller billx.nosp@m.wall.nosp@m.er@gm.nosp@m.ail..nosp@m.com

2026-02-11T14:50:33-06:00 - Documentation Updates

2026-02-10T22:34:27-06:00 - Reorganize files, added doxygen API

2026-02-08T23:39:17-06:00 - Documentation Updates

2026-02-06T23:51:51-06:00 - Documentation Updates

2026-02-06T20:56:59-06:00 - Documentation Updates

2026-02-06T15:11:12-06:00 - Documentation Update

2026-02-06T14:58:50-06:00 - Processing of mview parameters, Documentation

2026-02-05T18:06:14-06:00 - Corrections to Makefile and CMake install paths

2026-02-05T09:44:19-06:00 - Added dependencies to make install

2026-02-05T09:41:10-06:00 - Misspelling in Makefile

2026-02-05T00:36:06-06:00 - Mogrify Images

2026-02-05T00:27:31-06:00 - Documentation Updates

2026-02-04T09:07:22-06:00 - Documentation Updates

2026-02-03T21:30:17-06:00 - Calculate Window Size if zero

2026-02-03T13:19:07-06:00 - API placed in libcm.so

2026-01-31T19:57:53-06:00 - Documentation Updates

2026-01-31T18:25:55-06:00 - Documentation Updates

2026-01-31T16:45:04-06:00 - View Engine Improvements and Bug Fixes

2026-01-31T09:37:11-06:00 - Corrected errors in View Search Logic

2026-01-30T23:27:38-06:00 - Refine horizontal scrolling behavior in view

2026-01-30T19:15:08-06:00 - Modified Horizantal Scrolling default to pagewidth

2026-01-30T10:26:25-06:00 - Documentation Updates

2026-01-29T23:48:30-06:00 - Documentation Updates

2026-01-29T14:47:36-06:00 - Documentation Updates

2026-01-28T14:11:55-06:00 - Throw an error for bad ANSI escape sequences

2026-01-28T11:41:44-06:00 - Documentation Updates

2026-01-28T10:35:06-06:00 - Documentation Updates

2026-01-28T09:44:42-06:00 - Documentation updates and bug fixes

2026-01-27T22:56:00-06:00 - Corrected issue with italics attribute

2026-01-27T13:48:56-06:00 - Remove unneeded debugging code

2026-01-27T13:13:28-06:00 - Update terminfo documentation

2026-01-27T12:21:21-06:00 - Tweaking Color Supprt

2026-01-26T14:44:53-06:00 - Continuing work on view_engine.c

2026-01-26T13:53:55-06:00 - Corrected issue with input line index

2026-01-26T13:24:49-06:00 - view-engine fmt_line input handling optimization

2026-01-26T00:35:58-06:00 - Signal Handler, Documentation Updates

2026-01-25T00:36:03-06:00 - Delete Unneeded directory

2026-01-24T23:30:14-06:00 - Documentation Updates

2026-01-24T22:27:44-06:00 - Documentation Updates

2026-01-24T22:19:01-06:00 - Documentation Updates

2026-01-24T20:44:42-06:00 - Improve Signal Handling, Doc Updates

2026-01-24T10:45:44-06:00 - Documentation Updates

2026-01-24T10:34:42-06:00 - Documentation Updates

2026-01-24T10:29:03-06:00 - Documentation Updates

2026-01-24T09:07:22-06:00 - Corrected Gamma Calculation, added gray gamma

2026-01-23T22:48:59-06:00 - Documentation Updates

2026-01-23T18:41:53-06:00 - Documentation Updates

2026-01-23T18:35:33-06:00 - Documentation Updates

2026-01-23T18:33:45-06:00 - Documentation Updates

2026-01-23T13:20:07-06:00 - Documentation Updates

2026-01-22T21:49:10-06:00 - Documentation Updates

2026-01-22T18:44:17-06:00 - Documentation Updates

2026-01-22T17:25:03-06:00 - Documentation Updates

2026-01-22T17:19:10-06:00 - Documentation Updates

2026-01-22T12:46:28-06:00 - Documentation Updates

2026-01-22T12:43:46-06:00 - Documentation Updates

2026-01-22T12:35:16-06:00 - Documentation Updates

2026-01-22T00:54:41-06:00 - Clean-up of obsolete test and work files

2026-01-21T23:45:27-06:00 - Documentation Updates

2026-01-21T20:31:13-06:00 - Documentation Updates

2026-01-21T18:12:53-06:00 - Documentation Updates

2026-01-21T17:42:02-06:00 - Corrected issues with ANSI to Complex Char

2026-01-21T12:02:35-06:00 - Added Terminal Emulator Example Configurations

2026-01-21T11:55:01-06:00 - Documentation Updates

2026-01-21T10:42:00-06:00 - Corrected rgb_to_xterm256_idx, gcc -O2 issues

2026-01-20T21:23:30-06:00 - Conflicting signatures for str_tok_r

2026-01-20T17:50:53-06:00 - Update str_tok_r

2026-01-20T16:52:49-06:00 - Documentation Updates

2026-01-20T12:37:38-06:00 - Documentation Updates

2026-01-20T11:45:25-06:00 - Documentation Updates

2026-01-19T20:34:55-06:00 - Documentation Updates

2026-01-19T20:30:30-06:00 - Documentation Updates

2026-01-19T20:24:24-06:00 - Documentation Updates

2026-01-19T20:15:44-06:00 - Documentation Updates

2026-01-19T17:11:25-06:00 - Documentation Updates

2026-01-19T17:02:03-06:00 - File handling and memory management issues.

2026-01-18T19:27:11-06:00 - Documentation Updates

2026-01-18T18:15:59-06:00 - Documentation Updates

2026-01-18T12:15:47-06:00 - Documentation Updates

2026-01-18T11:42:56-06:00 - Documentation Updates

2026-01-18T10:18:45-06:00 - Documentation Updates

2026-01-17T23:05:46-06:00 - Documentation Updates

2026-01-17T22:20:52-06:00 - Documentation Updates

2026-01-17T22:12:13-06:00 - Documentation Updates

2026-01-17T19:58:45-06:00 - Documentation Updates

2026-01-17T12:43:19-06:00 - Documentation Updates

2026-01-16T21:05:03-06:00 - Documentation Updates

2026-01-16T21:00:56-06:00 - Documentation Updates

2026-01-16T17:38:31-06:00 - Documentation Updates

2026-01-16T17:13:13-06:00 - Documentation Updates

2026-01-16T01:34:27-06:00 - Documentation Updates

2026-01-16T00:48:47-06:00 - stripansi - Handle \033[K, API.md Update Doc

2026-01-15T22:31:41-06:00 - Documentation Updates

2026-01-15T20:28:49-06:00 - Same as previous commit, except for boxwin

2026-01-15T19:53:36-06:00 - View - enforce horizontal scrolling limit

2026-01-15T09:40:43-06:00 - Fixed unable to read stdin in view (ssize_t issue)

2026-01-14T19:24:32-06:00 - Documentation Updates

2026-01-14T12:11:44-06:00 - Documentation updates.

2026-01-14T10:03:33-06:00 - Data type corrections

2026-01-13T22:58:06-06:00 - Corrections to data types in view

2026-01-13T21:35:31-06:00 - View - interpret ANSI SGR \033[K correctly

2026-01-12T16:24:12-06:00 - Documentation updates

2026-01-09T18:10:51-06:00 - Documentation Updates

2026-01-09T13:27:19-06:00 - Documentation Updates

2026-01-09T13:12:51-06:00 - Documentation update

2026-01-09T12:36:50-06:00 - Documentation Updates

2026-01-08T23:11:10-06:00 - Added functionality to handle window resizing in the view engine.

2026-01-08T18:24:44-06:00 - Resolve problems exposed by ccc-analyzer

2026-01-08T17:52:00-06:00 - Documentation Updates

2026-01-08T01:07:22-06:00 - Updates

2026-01-08T00:12:46-06:00 - Documentation update

2026-01-07T23:18:10-06:00 - Documentation update

2026-01-07T23:16:08-06:00 - Documentation uppdate

2026-01-07T23:12:09-06:00 - Documentation update

2026-01-07T23:06:22-06:00 - Documentation update

2026-01-07T21:09:26-06:00 - Documentation Updates

2026-01-07T08:35:43-06:00 - Listed recent changes

2026-01-07T08:16:06-06:00 - Movement keys

2026-01-06T23:09:33-06:00 - Documentation updates Merge: 66704b9 0f77a44

2026-01-06T22:26:19-06:00 - Merge remote-tracking branch 'refs/remotes/origin/main'

2026-01-06T22:09:20-06:00 - Clean-up

2026-01-06T22:07:31-06:00 - Delete doc/extras.html

2026-01-06T21:56:33-06:00 - Update image paths in extras.html

2026-01-06T21:52:46-06:00 - Delete doc/screenshots

2026-01-06T21:41:15-06:00 - Clean-up

2026-01-06T21:25:48-06:00 - Continuing updates

2026-01-06T20:55:55-06:00 - Added hjkl to motion keys, added Form entry to View

2026-01-05T20:09:07-06:00 - Modified image directory in extras.html

2026-01-05T20:06:08-06:00 - Fix image paths in extras.md Updated image paths in extras.md to remove '../' prefix.

2026-01-05T19:59:40-06:00 - Move extras to root directory

2026-01-05T19:54:06-06:00 - Updates for documentation and code comments

2026-01-04T19:58:12-06:00 - Continuing clean-up

2026-01-04T11:14:22-06:00 - Updates to CMake build

2026-01-04T09:03:57-06:00 - Added extras.html file and updated documentation files

2026-01-03T21:12:52-06:00 - Continuing clean-up

2026-01-02T18:18:10-06:00 - Additions

2026-01-02T14:49:19-06:00 - Title banner box view

2026-01-02T14:12:51-06:00 - Next page test for EOD

2026-01-02T11:06:25-06:00 - Mouse Support for Function Keys in Form_Engine

2026-01-02T09:07:40-06:00 - Add -d (depth) option to lf

2026-01-01T21:52:14-06:00 - Deal with superfluous escape character in input file

2026-01-01T13:47:37-06:00 - Continuing clean-up

2026-01-01T08:17:06-06:00 - Continuing clean-up

2025-12-31T22:25:56-06:00 - Fixed issue with -S, -R, and -c options

2025-12-30T22:31:28-06:00 - clean-up

2025-12-30T22:19:52-06:00 - Continuing clean-up

2025-12-30T18:31:04-06:00 - Clean-up

2025-12-30T17:03:30-06:00 - Clean-up

2025-12-30T16:41:52-06:00 - Continuing clean-up

2025-12-29T23:45:40-06:00 - Continuing clean-up

2025-12-29T21:56:00-06:00 - Fix typeo

2025-12-29T20:01:03-06:00 - Typeo correction

2025-12-29T18:07:41-06:00 - Added section on external executables

2025-12-29T17:01:05-06:00 - Form logic corrections

2025-12-29T00:58:07-06:00 - Update README and FAQ

2025-12-29T00:42:41-06:00 - Add name known as

2025-12-29T00:38:21-06:00 - Refine descriptions for receiver and provider

2025-12-29T00:33:22-06:00 - L and C options reversed

2025-12-28T22:45:25-06:00 - Continuing clean-up

2025-12-28T22:13:45-06:00 - Continuing clean-up

2025-12-28T21:47:59-06:00 - Continuing clean-up

2025-12-28T19:42:34-06:00 - Continuing clean-up

2025-12-28T18:47:31-06:00 - Continuing clean-up

2025-12-28T18:26:10-06:00 - Continuing updates

2025-12-28T17:16:07-06:00 - Added FAQ section to doc

2025-12-27T20:35:15-06:00 - Additional extras

2025-12-27T19:56:27-06:00 - Continuing clean-up

2025-12-27T18:38:42-06:00 - Continui

2025-12-27T17:39:54-06:00 - Continuing clean-up

2025-12-27T16:44:38-06:00 - Continuing clean-up

2025-12-27T14:13:20-06:00 - Continuing clean-up

2025-12-27T10:40:49-06:00 - Updated Help Screen to reflect option changes

2025-12-27T10:12:14-06:00 - Changed -c, and -S options, and added -R

2025-12-26T23:17:52-06:00 - Continuing clean-up

2025-12-26T22:53:02-06:00 - Continuing clean-up

2025-12-26T13:45:37-06:00 - Back to some level of sanity

2025-12-25T22:32:35-06:00 - Continuing updates

2025-12-25T21:40:06-06:00 - This set of patches may be buggy. Substantial changes.

2025-12-25T18:26:53-06:00 - Continuing clean-up

2025-12-25T16:58:28-06:00 - View screen geometry

2025-12-25T16:48:46-06:00 - View screen geometry corrected

2025-12-25T09:55:57-06:00 - Can't use treesitter with main.m (no parser)

2025-12-24T22:21:45-06:00 - Continuing clean-up

2025-12-24T22:19:47-06:00 - Continuing clean-up

2025-12-23T22:41:15-06:00 - Continuing clean-up

2025-12-23T22:39:24-06:00 - Continuing clean-up

2025-12-22T22:25:20-06:00 - Continuing clean-up

2025-12-21T23:08:58-06:00 - Add extras.md to doc

2025-12-21T23:07:43-06:00 - Add extras.md to doc

2025-12-21T23:05:48-06:00 - Added extras directory

2025-12-21T22:42:38-06:00 - Continuing clean-up

2025-12-21T19:04:38-06:00 - Continuing clean-up

2025-12-21T16:00:36-06:00 - Continuing clean-up

2025-12-21T14:57:37-06:00 - Continuing clean-up

2025-12-20T22:10:07-06:00 - Continuing clean-up

2025-12-20T22:08:33-06:00 - Continuing clean-up

2025-12-20T21:23:31-06:00 - Continuing clean-up

2025-12-19T10:22:22-06:00 - fix view KEY_UP disabling itself by setting view->f_bod

2025-12-18T23:22:38-06:00 - Clean-up

2025-12-18T22:49:58-06:00 - Continuing clean-up

2025-12-17T18:29:35-06:00 - Clean-up continues

2025-12-17T18:27:27-06:00 - Clean-up continues

2025-12-17T10:04:38-06:00 - Continuing clean-up

2025-12-17T07:19:03-06:00 - Expand line buffer to accommodate 2048 byte lines

2025-12-16T23:15:28-06:00 - Bug Fixes

2025-12-16T23:11:34-06:00 - Bug fixes for pick

2025-12-16T20:43:48-06:00 - Continuing the cleanup after refactoring.

2025-12-14T22:40:33-06:00 - Continuing the clean-up after added features

2025-12-09T17:53:58-06:00 - General Cleanup

2025-12-09T17:49:29-06:00 - General Cleanup

2025-12-09T17:48:31-06:00 - General Cleanup of Repository

2025-11-21T14:33:56-06:00 - More updates

2025-11-21T13:59:58-06:00 - C-Menu still needs lots of work

2025-11-06T21:04:58-06:00 - Update distribution files

2025-11-04T18:14:50-06:00 - Major revisions, but not complete yet.

2025-10-11T23:28:26-05:00 - Add files via upload

2025-10-11T23:07:06-05:00 - Initial commit