diff -uNr a/yrc/NEWS b/yrc/NEWS --- a/yrc/NEWS a4e52a601f96abd15017767703388220a2855b8be122d7495359f377adba84ff2985093de383407d9b0da9d27d55ddd976a1618bddbc2fce0ad5b9914aa97a58 +++ b/yrc/NEWS ed9fe6919e2e04f8d92d9aeeb02ff020801215f22e9f3008c125b5b23e9c0ce839714c2bc771c44481f0458b953f42d944086518d1fb666729cafa9dd2da5ad4 @@ -1,3 +1,35 @@ +95K (2022-12-14) +================ + +New features: +- Input history +- Word-level back/forward cursor motions +- Bulk deletion (to start or end of word or line) with recent kill history for pasting +- Tab completion for nicks in channel, joined channels in network, and slash commands +- /close-net command to disconnect and close all associated windows +- /reconnect command to force reconnection without losing runtime configuration + +Command changes: +- /connect and /join now send focus to the target window (creating it as necessary). +- /join, /part and /disconnect no longer log the action to the server messages window, since their network-acknowledged effects are visible anyway in the appropriate places. +- /quit no longer takes a quit message, because it didn't work, and can't be made to work reliably without blocking client shutdown to wait for acknowledgement. +- /close now takes a part message, since it implies /part when used on a channel. +- /disconnect no longer takes a network name, always acting on the current window's network; this clears the way to letting it take a quit message instead at some point. +- Keyboard commands not intended as slash commands (eg cursor movement and scrolling) can no longer be sent by name from the prompt. (Conceptually, the two command types are now clearly distinguished by considering the leading slash as part of the name.) + +Protocol changes: +- /nick now works also when unregistered, for servers seen in practice, by sending a fresh USER command along with the NICK. This helps when a nick is rejected on connect, such as when it's already in use. +- Reconnection becomes somewhat more aggressive as the initial delay drops from 4 seconds to 1, making for a more responsive /reconnect. (Singular vs. plural complications in the delay info message are avoided by abbreviating the "seconds" unit.) + +Deprecated features: +- Command abbreviation (eg /c for /connect): please speak up now if you still find this beneficial even with tab completion. + +Style: +- Switch to tab-based indent for manual.txt too + +Internals: +- Assorted refactoring, reordering and optimization + 96K (2020-06-08) ================ diff -uNr a/yrc/codemap.txt b/yrc/codemap.txt --- a/yrc/codemap.txt f725097ba8d01aba9b666e7ea2fc57ba8341d4e6929f9888fbbb3ae9638aaacd74b75e8c50e7ca27bdab1cc1313d5e8e68a8503ef262d981948e7ca8187140d8 +++ b/yrc/codemap.txt 89e86ffca2faea6d378bfb125023b1ceac5ff412ce5ec89d18b7a774eed6b702ed8ae8b03fe0ca99e5103df60874f53c3f11ccf0a1471f0301320d7272ff7e5f @@ -276,44 +276,39 @@ ring_append(ring of t, t) Slash commands: -quit_cmd connect_cmd disconnect_cmd join_cmd kick_cmd +list_cmd +me_cmd mode_cmd +msg_cmd +names_cmd nick_cmd part_cmd +quit_cmd +reconnect_cmd send_cmd +topic_cmd +set_topic_cmd +whois_cmd +whowas_cmd +close_cmd +close_net_cmd Lifecycle: main crash_handler -MVP: -finish commands - close/close-net debug +TODO (mostly see Roadmap in manual.txt): prefix case sensitivity in conn_handle_msg? - -TODO: -nick fallback -buflist vscroll -modes -date changes -prompt history, kill ring -tab completion (but how to focus buf/prompt?) username, realname -logging + - this is more restrictive on length and characters than nick, though undocumented; perhaps just put 'yrc' here! bold nicks (generally: formatted wrap) -search in scrollback -channel key (config, persist across reconnect) -buffer cleanup by category -help -scripting self-ping to find user@host to calc max privmsg length + - possibly we can count on this coming in the server's Welcome message though it's less than clear in the RFCs Proliferation of casemapping is bound to be buggy. -Recognize WHOIS/WHOWAS/LIST responses -bracketed paste Possible cleanups: more use of lambda/sequence for trivial functions diff -uNr a/yrc/manifest b/yrc/manifest --- a/yrc/manifest edaf7788db3a0a461b684665d5f4305e706a50d74f204adbc447d5034bb2d34ebccdda3d0f9ce42d2b0545422a9f682638a420f28a2eda491b3933136af30e15 +++ b/yrc/manifest 64d2bd58b09455123fde186b32e47cf766a82f342735b2adf940b491eb84dbe6aa41edc0a932596dde85384a6c112dfa06a2d323d3748110b4ab29d5b45d9150 @@ -12,3 +12,4 @@ 769934 yrc_completion jfw Implement tab completion for nicks, channels and slash commands. Relatedly: factor out the now common case of inserting multiple characters into the prompt at once, as insert_multi; correct rfind_word_start and find_word_end to always return a valid cursor position (empty returns previously happened to work due to obscure details of None handling); turn the leading slash into a proper part of slash command names, facilitating completion and better distinguishing them from keyboard commands. (Slash commands without parameters could in theory still be given key mappings, but the normal keyboard editing & scrolling commands make little sense to type at the prompt and are no longer recognized there.) 769938 yrc_net_level_commands jfw Implement /close-net and /reconnect commands, and straighten out which commands can take a part/quit message. A reliable QUIT message *could* be implemented for /disconnect and /close-net (unlike for /quit), so make space to add it there by dropping the optional network name argument from /disconnect, which I found to be more confusing than helpful anyway. 769940 yrc_connect_join_streamlining jfw Switch to network window on connect and channel window on join. Remove self-generated join/part info messages which route distractingly to the network window (the more useful server confirmations still show in the channel's own window and log). Send a new USER command when changing nick in the connected-unregistered state, since I found it necessary for multiple server implementations when nick is in use. +769941 yrc_95K_rc1 Release candidate: catch up on codemap.txt updates, syncing up with the manual; lower temperature (ie bump version numbers) and update NEWS; import my old script for creating deterministic release tarballs, now updated to run on Gales. diff -uNr a/yrc/manual.txt b/yrc/manual.txt --- a/yrc/manual.txt a881ee36fcf2116e6c2be18c655c7a5fb6b74fcb1288bff3ea5e7ee8c225527d889e05b09e3a1a493a7ecb86d42ee0d85214226aa38759ebb7799a89f9950b04 +++ b/yrc/manual.txt 6c640c94ee48b479c0ce3f7d6f36de994e7f90497151330287b77d9899c465c6a3683d545cff7ebfcfbf4ac95caa59494f2408734f07b7f9e461065943353d1f @@ -1,6 +1,6 @@ The yrc manual -Version 97 Kelvin +Version 95 Kelvin Jacob Welsh Table of Contents @@ -421,6 +421,7 @@ - Indication of nick mentions (ring bell + bold the window name?) - Formatting for displayed messages (e.g. bold sender, highlight own nick) - Filtering of inbound PMs (/ignore or similar) + - Filtering of join, part etc. in rendered scrollback - More efficient navigation of window list - Search in scrollback - Nickname fallback @@ -430,7 +431,8 @@ - Bracketed paste [meh, not all it's cracked up to be] - Date change messages - Channel join status indicators - - Finish config fields [?] + - Finish config fields + - username for USER message (it's more restrictive than nicknames, though undocumented; perhaps just put 'yrc' here!) 6. News and contact diff -uNr a/yrc/release.sh b/yrc/release.sh --- a/yrc/release.sh false +++ b/yrc/release.sh 5ccaca9606d497edf97ba75f584650282615a5dfed835e782ee1f5ef3f79161493418914a2f742d0c7f789a8bc04d955a5dbc94b6e7795c3251905a0c538720d @@ -0,0 +1,25 @@ +#!/bin/sh +set -e +FILES=" +NEWS +README.txt +manual.txt +setup.py +pylintrc +codemap.txt +yrc +yterm.py +yrc.py +yrc2local +" +VER=`python2.7 -c 'import yrc; print int(yrc.__version__.split()[0])'` +ROOT=yrc-$VER +rm -rf dist/$ROOT +mkdir -p dist/$ROOT +cp -p $FILES dist/$ROOT +cd dist +# determinism options for GNU tar +#tar --owner=root --group=root -cf - `for f in $FILES; do echo $ROOT/$f; done` | gzip > $ROOT.tar.gz +# and for Gales BusyBox tar +tar --sterilize -cf - `for f in $FILES; do echo $ROOT/$f; done` | gzip > $ROOT.tar.gz +rm -rf $ROOT diff -uNr a/yrc/setup.py b/yrc/setup.py --- a/yrc/setup.py 1e75beb3ae11ab60465d7fb851e0ffdbbef8cd130dde4f9372e0237ec3d3e941c645d4bb2690e3bb598862709ac7373526f34ae8aeb4cd1cc545cda4bf766c00 +++ b/yrc/setup.py 0ad7c4aa3f3f51accfed2e821f6365fe02bb9afad26b5be2f7cb142d5f8be9cf5b68424f409b46727698315915597c1e1f1fc2cdc1c0a508ca605ae6692cd0a5 @@ -2,7 +2,7 @@ setup( name='yrc', - version='97K', + version='95K', description='A Unix IRC client', py_modules=['yrc', 'yterm'], scripts=['yrc', 'yrc2local'], diff -uNr a/yrc/yrc.py b/yrc/yrc.py --- a/yrc/yrc.py 754c6f8cb82674313eaa78bdd8d7736dd6fc7340c69526518ec7d53550719913a1c9bd338610eb342bd790cb4343937da4942f532a331345fd42fc3c66568e22 +++ b/yrc/yrc.py 0963718b94a2b9a8e9e8fa120cf1c8f6b3575080eee08b93a362512b9c79e5da22b5bdeedf18e8cccba8884081c016afc9cfff5e474185a6a50814293d047cac @@ -4,7 +4,7 @@ February 2017 - June 2019 """ -__version__ = '96 Kelvin' +__version__ = '95 Kelvin' # Knobs that one might conceivably want to tweak KILL_RING_SIZE = 8