I revisit now my IRC client from the other side of seven months since initial public release and a full year since my last round of development on it. Its usage in this interval has been pleasantly free of unexpected problems; indeed the Unix process containing my own "daily driver" has an uptime of that full year, handling everything Freenode's managed to throw at it without a hitch. On the other hand, the software didn't see all that much attention from others, and I became rather complacent about its known quirks and problems.
The interval also saw me coming around to Mircea Popescu's insistence that indentation is done with tabs and not spaces(i) while line breaks are for conveying some kind of meaning beyond "my terminal is too dumb to wrap text on its own". I also switched to the tree structuring convention, prevalent in the software that grew in TMSR, of having a top-level directory named to match the project. As making these changes to an existing tree results in quite a noisy patch, perhaps to the point of effectively severing the connection to the previous state for all the good it does the reader, I've taken this occasion to re-bake the genesis patch yet again. As I'm unaware of anyone else having reviewed the code, I expect this won't pose any real inconvenience.
This out of the way, we get to the more substantive change: refining the scrolling model to count by lines on screen rather than full IRC lines, while still staying anchored to the visible text when the window is resized. I also managed to preserve algorithmic independence from scrollback log length: wrapping is computed on demand for only the necessary lines, ensuring UI responsiveness.
The reason for prioritizing this fix was that a new user pointed out its importance. There's more work upcoming, including tab-completion of names.
A few other fixes and improvements are included, including Python 2.6 compatibility (as yet untested by me); see the included NEWS file for details.
To install, you will need a Keccak V implementation such as my v.pl starter, plus the patches and seals:
- yrc_subdir_genesis.vpatch (seals: jfw)
- yrc_linear_scroll_etc.vpatch (seals: jfw)
Or download in bulk, e.g.:
wget -m --no-parent http://fixpoint.welshcomputing.com/v/yrc/
Once the tree is pressed, see yrc/README.txt
for futher instructions.
- I'm still not sure what if anything this says about Lisp. [^]
Yay, new vpatch read, applied and set in use. So far so good and thanks for fixing it timely! Mirroring and signing the vpatches is on my list too but it might still take a while to happen.
Comment by Diana Coman — 2020-06-08 @ 18:25
[...] http://fixpoint.welshcomputing.com/2020/yrc-re-genesis-and-patch-for-smooth-scrolling-and-other-fixe... << Fixpoint -- yrc re-genesis and patch for smooth scrolling and other fixes [...]
Pingback by #ossasepia Logs for Jun 2020 « Ossa Sepia — 2020-06-26 @ 13:36
[...] svn days and have the git habits more ingrained - but then I wouldn't know). Yet since I've already converted most of my stuff I can't really abide keeping this one exception around; and since the legacy [...]
Pingback by Gales Bitcoin Wallet (re)release « Fixpoint — 2021-12-03 @ 08:58
[...] Its software requirements are unchanged: Python 2.6 or 2.7. In particular, no third-party "readline" library sneaks in to support the refined editing and history features; nonetheless the codebase size remains quite manageable at around 2750 total lines of Python, up a mere 350 from the last release. [...]
Pingback by yrc 95K release with patch pile « Fixpoint — 2023-01-24 @ 20:58