Changes:
* improve reporting of invalid diff command arguments (reported by Dan Shearer)
* accept libfossil global -V|--verbose option for all commands
* plug memleak when using the p keymap in blame view
* fix fnc blame -r and make it behave like fossil blame -o for familiarity
* improve fnc timeline <path> lookup of repository paths not in the work tree
* make tree navigation more intuitive when opening repository subtrees
* implement [ & ] keymaps to navigate to the previous/next hunk in the diff
* allow fnc stash get to take an optional <stash_id> argument
* document fnc(1) missing W diff view keymap to ignore end-of-line whitespace
* document optional <stash_id> argument of fnc stash pop [stash_id]
* fix typo producing gcc 12.1.0 compiler warning (comparison always true)
* improve scope matching for function prototype in diff hunk headers
* ifdef out A_BOLD attr on OpenBSD to fix diff view line highlight in xterm(1)
* display checkout hash and build date with fnc -v like fossil(1)
* miscellaneous diff API implementation improvements
* protect against out-of-bound reads now line_type array is optionally populated
* add -b|--brief option to fnc diff and b diff view keymap
* general fnc(1) manual page markup, syntax, and documentation improvements
* rename FNC_DIFF_COLOUR_CHUNK to FNC_DIFF_COLOUR_HUNK to match internal naming
* (breaking change: existing FNC_DIFF_COLOUR_CHUNK will be silently ignored)
* ensure diff parser does not internally mark modified files as renamed
* improve const correctness with fsl_uuid_cstr where possible
* fix contrived empty diff case when work tree root is passed to fnc diff
* improve path handling of files on disk vs. files in the repository database
* produce less verbose output on error by not presumptuously dumping help
* zap unnecessary allocation and minor refactor in the path parser
* don't display empty diff in contrived modified checkout edge case
* catch missed fsl_content_get() fsl_unlink_file() & fsl_mprintf() return codes
* miscellaneous style(9) fixes
* fix missed format specifier argument in blame path error message
* ensure fnc stash (get|pop) doesn't report updated files as renames
* use "(checkout)" label in diff header when diffing or stashing the work tree
* internal stash refactor in preparation to move code into libfossil
* catched missed SIGINT and SIGTERM signals
* use CHAR_BIT for bitstring manipulation macros
* fix assumption of invalid command argument as a path to pass to fnc timeline
* merge upstream libfossil with various changes
OK op@
Changes:
fnc 0.12 2022-05-09
* replace s regexp with portable [[:space:]] character class (patch by Ashish)
* fix blame->diff child split view regression from 0.9 introduced in [d05828fbb]
fnc 0.11 2022-05-08
* handle diff of non-versioned files outside the work tree (reported by Dan)
* replace getpagesize() with portable sysconf(_SC_PAGESIZE) (patch by mgagnon)
* improve robustness by guarding against piped input abuse (reported by Dan)
* improve documentation regarding UTF-8 character encoding and fonts
* implement horizontal scroll of the log message summary line in timeline view
* fix out-of-bounds UB on 32-bit builds (reported by mgagnon)
* convert unified diff renderer to the improved line_type interface
* fix format specifier bug evinced on 32-bit builds (reported by mgagnon)
* improve unicode handling in terminals w/o UTF-8 support (reported by mgagnon)
* handle window resizing of horizontal and vertical splits (reported by mgagnon)
* improve regexp used to identify commit meta lines
* implement fnc stash to interactively select hunks to stash (cf. git add -p)
* fix diff regression introduced with fnc stash implementation [2870235eef78]
* simplify handling of diff driver error codes (i.e., binary, type, range)
* improve curses WINDOW reporter interface
* dynamically place help dialog title depending on viewport width
* improve return code RC macro to detect empty varargs token
* fix signed/unsigned comparison introduced in [41dfeb9ebb3d]
* display hunk index in fnc stash input prompt
* documentation improvements in README
* update in-tree SQLite lib to 3.38.5 with multiple bug fixes
* add apply alias for fnc stash get to facilitate Fossiler muscle memory
* simplify error, and tailor usage, reporting when handling invalid input
* remove redundant fcli_has_unused_args() call in main()
Changes:
* fix gcc 9.3 compiler warnings (i.e., unused variable) (reported by stephan)
* restrict C key map for diffing local changes to check-in artifacts
* ensure timeline --branch option ignores cancelled branches (reported by sean)
* fix landlock initialisation of handled fs access perms (patch by Ashish)
* tighten landlock ruleset depending on which fnc command is called
* improve branch view rendering of last modified date and hash id
* colour branch header and make (in)active behaviour consistent with other views
* improve branch parsing of imported repositories (reported by Dan)
* fix OB1 error when branch entry length exceeds COLUMNS
* add timezone path to landlock ruleset (reported by Ashish)
* implement P key map to write a patch file of the currently viewed diff
* fix invalid write in landlock initialisation code (reported by Ashish)
* ensure unveil(2) initialisation handles -R|--repo invocations
* add create file to landlock ruleset for permitted dirs (reported by Ashish)
* make mandir if needed in makefile install target (reported by Dan)
* document backspace key map to cancel tl search/traversal (reported by Dan)
* return to blocking on user input when tl search is aborted (reported by Dan)
* implement persistent diff options for global and per-repo defaults
* implement --whitespace-eol and W key map to only ignore eol whitespace
* implement horizontal scroll in the in-app help
* add Q key map to in-app help to directly quit fnc
* implement blame navigation from diff view with C-{j,k} key maps
Changes:
* Add blame command line option to open annotated file at the specified line
* merge upstream libfossil changes that eliminate gcc compiler warnings
* adopt libfossil diff v1 implementation into fnc tree to replace v2 API
* refactor diff implementation to comport with code style
* fix --whitespace option (w keymap) diffv2 regression from 0.7 [105123b40e]
* implement diff --line-numbers opt (L keymap) to display file line numbers
* implement display of enclosing function in diff chunk headers (enabled by
default like CVS and Git, disabled with --no-prototype or p keymap); works
with all C-like languages, but not Lisps or markup languages
* upstream libfossil fix for segv bug when fsl_int_d and fsl_id_t differ in size
* fix incorrect malloc producing undefined behaviour on 32-bit platforms
* add unveil (c)reate permission to the checkout dir to fix some diff commands
* change conflicting diff and blame view key maps
* implement taggable timeline nodes to interactively diff arbitrary commits
* implement C timeline keymap to diff selected commit against local changes
* clean code of OS-dependent ifdefs by consolidating them in called functions
* add support for landlock Linux security module in Linux builds
* significant diff driver refactoring for finer granularity in view manipulation
* implement --sbs (S keymap) to display side-by-side formatted diffs
* add FNC_COLOUR_DIFF_SBS_EDIT option to set colour of edited lines in SBS diff
* plug small memory leak when interactively changing diff format
Sofware changes:
fnc 0.8 2022-01-10
* fix vertical split view init regression from 0.7 when terminal < 120 cols wide
* fix DB lock when opening horizontal split that signals the timeline thread
fnc 0.7 2022-01-09
* factor out common make(1) and gmake build bits
* make build depend on make file
* make all commands compatible with -R|--repository (i.e., no checkout needed)
* implement Vim-like smartcase for commands that filter repository results
* improve timeline arg parsing for more informative output upon invalid input
* plug small memory leak when the timeline command fails to initialise a view
* fix database locking issue when opening multiple tree views from the timeline
* add pledge(2) and unveil(2) support on OpenBSD builds
* add (s)ort keymap (i.e., --sort CLI option counterpart) to the branch view
* add (d)ate keymap to toggle display of last modified timestamp in tree view
* allow blame of empty files rather than erroring out
* fix NULL dereference UB when the ".." parent dir is selected in tree view
* merge upstream fix when annotating files with shallow history
* add support for configurable horizontal split view mode (timeline -> diff)
* keep the last/first line in view when paging down/up to stay oriented
* expand horizontal splitscreen support to include tree -> blame views
* improve handling of cached commit builder statements
* plug small memleak of file labels when traversing commits from the diff view
* display message rather than error out when binary files are blamed
* expand horizontal split coverage to include timeline -> tree views
* implement '#' keymap to display line numbers in blame view
* implement (L)ine keymap to navigate directly to the entered line in blame view
* convert diff code to use upstream v2 API
* keep lines on screen in view when using keymaps that modify diff content
* reset diff search state when traversing commits from the diff view
* apply upstream diff fix to render consecutive edited lines as one block
* implement '#' keymap to display line numbers in diff view
* improve C-f/C-b paging in the in-app help window
* add user-defined option to configure search highlight colours
* implement navigate to (L)ine keymap in diff view
* enhance timeline and diff view headers
* implement user-defined option to configure line selection cursor in diff view
* implement Vim-like C-e/C-y keymaps to scroll down/up one line in diff view
* implement horizontal scrolling in diff and blame views
* improve view request handling and optimise new view initialisation
* implement C-n/C-p keymap to navigate to the next/previous file in the diff
* implement (F)ile keymap to navigate directly to a file in the diff
* apply upstream diff v2 fix for rendering untouched lines as changed
* implement Vim-like C-d/C-u keymaps to scroll the view down/up half a page
* enhance search behaviour in all views
Port changes:
* dropped NO_TEST=Yes because we don't set this when no test is present
* dropped patch as it has been merged upstream