Mar 2023 2.02.32 ------------------------------------------------------------------------------ data.c Changed the symbol for the strict equality assignment/lookup from \ to = due to compatibility issues. You'll get a warning if a variable or table key begins with a \. net.c Added the PROCESSED LINE event. Like RECEIVED LINE, but it triggers after line triggers have been processed. variable.c Added support to use \A in #replace and #substitute to only match the start of a line. When using ^ the behavior is more ambiguous, matching at the start of each line and at the end of each preceding match. net.c Added the PACKET PATCH event which triggers when a broken packet is detected. Has some utility for trouble shooting. list.c Added #list copy to copy a variable to the given list. Will copy tables as well. log.c Added #log make to create directories. #log remove can be used to remove one. trigger.c Added support for multi-line substitutions. show.c Added a REFORMAT event which can be used to alter system messages. Must use #return to set the new message format. help.c Added a CATCH HELP event. #event {CATCH HELP NOP} {#line ignore #showme bla} class.c #class clear/close/kill/list/load/save/size/write no longer create a class if none exists. split.c When using #split 0 1 0 -80 it will correctly use the negative argument on subsequent screen resizes. list.c Added #list swap to swap two list items. cursor.c You can paste multi-line triggers by first pressing ctrl-v, next paste the data, followed by pressing ctrl-enter. mapper.c Added #map flag autolink . Default is on. Set to off to disable automatically linking overlapping rooms. Jan 2023 2.02.31 ------------------------------------------------------------------------------ cursor.c #cursor {get} will escape braces and other special characters. config.c Added the CONFIG event which triggers when a config option is set. %0 holds the option name, and %1 the value set. mapper.c When saving #map list to a table the vnum is now automatically included. data.c Added #info output which can be used to access the most recent data received from the mud. config.c Hybernate is now hibernate. Let's pretend that never happened. config.c Added #config hibernate on/off. When enabled it will reduce the idle cpu overhead by 90%, though tintin will be more sluggish and timers will fire with decreased accuracy. trigger.c A multi-line action can now trigger multiple times per block of text, skipping to the next unmatched line after each match. nest.c Fixed a bug reported by dzp where $var[] didn't behave identical to $var[%*]. show.c A #showme containing a \n sequence will exclusively trigger multi-line triggers. history.c Added the HISTORY UPDATE event, %0 contains the command being added to the command history. help.c Added #help triggers which explains multi-line triggers. regex.c Added initial support for multi-line triggers. mapper.c The roomdesc now requires %a instead of %* to match multiple lines in searches. net.c Added the %1 argument to the RECEIVED OUTPUT event, which holds the plain text version of the data received. regex.c Added a warning when matching escape codes in a trigger without the trigger starting with a '~'. line.c Added #line logmode stamp option to force the adding of a timestamp when using #line log. config.c Added #config compact which is disabled by default. When enabled it can get rid of blank lines surrounding a gagged prompt line. substitute.c Fixed #alias and #function so #info arguments save works. line.c #line log no longer prints a stamp if #log timestamp is set, unless you're writing to the active log file. main.c The terminal title set with tt++ -t will now reset on exit. variable.c Added support for #format %.-3s which will print the last 3 characters of the string. regex.c It should now be possible to use %+10* %+1..5* etc variable.c Fixed a crash bug in #cat reported by dzp. tokenize.c Colorized some of the #debug messages, and added a debug message to mark the end of a trigger. tokenize.c Added error message for #foreach, #loop, #parse, #switch, #while, and #regex if invalid syntax is used. net.c Fixed a display problem related to #config packet_patch in vertical split mode. mapper.c Changed the usage of float to double to fix rounding issues in path calculations. Jul 2022 2.02.30 ------------------------------------------------------------------------------ help.c #help and #command when used with no argument display the entries as columns instead of rows. ../docs/ I got started on a tintin generated github website. https://scandum.github.io/tintin mapper.c Using #map exit dir 0, will now properly save. screen.c #screen set rows/cols will now properly initialize the new rows/cols setting for the screen dimensions. This will be global for all sessions. The values are reset when resizing the terminal. telopt_client.c Updated the TTYPE MNES negotiation to report a standardized charset value. telopt_client.c Updated the TTYPE MTTS negotiation to report SSL support if GnuTLS is included in the compilation. telopt_client.c Updated the TTYPE MTTS negotiation to report MSLP and mouse support if #config mouse is set to on. draw.c #draw SCALED will not scale horizontally when combined with the VERTICAL flag. gui.h Updated the connection manager (tt++ -g) with new sponsors and some bug fixes. trigger.c #prompt with a row argument of 0 will behave like #substitute. input.c Fixed memory access violation identified by dzp. line.c Updated #line gag to support #line gag [amount], you can use + or - to increase or decrease the current amount. mapper.c Added {both} option to #map exit and entrance where applicable. list.c Added #list {var} refine {keep} {remove}. Keep and remove must be a mathematical expression, the keep argument is ignored if {} is used, the remove expression is optional. #list indexate must be used to refine tables. In the expression &0 must be used as the placeholder of the item value being compared. draw.c If you #draw with both the talign and balign flags set the text will be centered vertically. mapper.c Added #map flag symbolgraphics support to #map flag mudfont line.c Added #line json with &0 containing the variable's value translated to json. telopt_client.c IAC SB GMCP %0 data %1 plain data has been changed to IAC SB GMCP %0 data %1 data %2 plain data trigger.c Fixed a bug with using #highlight {[} list.c Added #list numerate to renumber a list or table. list.c Proper lists will be renumbered after using #list filter. net.c Added a GAG NO SESSION ACTIVE event to block the NO SESSION ACTIVE message. %0 holds the command. regex.c Added %c for regular expressions which captures color codes. mapper.c Added #map flag fast which will limit coordinate searches to a 50 room radius. Improves the speed of map drawing and auto linking on large maps. This can result in the mapper failing to auto link if the path connecting two rooms exceeds the search radius. split.c Moving the cursor back to the scroll region if #split is used in an #action. parse.c No longer echoing hashbangs/shebangs unless tt++ -v is used. tables.c Fixed two errors in the ascii table, patch by dzp. net.c Added tcp keepalive at the socket level, patch by beinvisible. Sep 2021 2.02.20 ------------------------------------------------------------------------------ main.c Added -H startup option to run tintin in a nohup compatible mode. list.c Changed #list explode to support: #list {var} {explode} {separator} The separator can be {;} or {\n} or anything else. Variables and escape codes in the separator are substituted. This turns a variable into a list using the given separator. list.c Updated #list collapse to support: #list {var} {collapse} {separator} The separator can be {;} or {\n} or anything else. Variables and escape codes in the separator are substituted. This turns a list into a variable. buffer.c Updated #buffer find to support: #buffer {find} {[number]} {} {[variable]} The number must now be -1, -2, etc to search starting from the end of the buffer, and 1, 2, etc to search from the start. buffer.c Updated #buffer clear to support: #buffer {clear} {[lower bound]} {[upper bound]} tokenize.c Increased the buffer size of #foreach to 1 million bytes, can be adjusted in tintin.h by changing MALLOC_SIZE. data.c Added #info arguments [save] option that will display all arguments / matches of the most recently fired trigger. data.c Added #info matches [save] option that will display all matches of the most recently fired command like #regex. data.c #kill all will no longer remove pathdirs. telopt_client.c Fixed an incorrect rejection response for the charset telopt. mapper.c Fixed #map goto jumping to the room you're currently in on a failed search. telopt_client.c Fixed handling of empty arrays for gmcp. mapper.c Added #map flag pancake which will display rooms on the map above and below you while enabled. You can use #map color room to display rooms with a white to black color gradient in pancake mode. To easily view color gradients use: #loop 6 0 i #draw scroll bar 1 1 1 40 {$i;6;} session.c The SESSION CREATED and SESSION CONNECTED will store the file name, if provided, in the %4 argument. draw.c #draw line now takes a text argument which can be further manipulated with the CALIGN and RALIGN flags, LALIGN is the default. session.c The SESSION CONNECTED event now triggers after the SESSION CREATED event. session.c Changed GAG SESSION DISCONNECTED to GAG SESSION DESTROYED. mapper.c Added the #map info save option. utf8.c Updated the cp949 to utf8 table with additional characters. May 2021 2.02.12 ------------------------------------------------------------------------------ input.c Added RECEIVED INPUT CHARACTER event that triggers on each character added to the input buffer. %0 holds the character, %1 the unicode index, %2 the byte size, %3 the character's display width. cursor.c Added #cursor tab caseless option to make tab completion case incensitive. dict.c Added #cursor tab dictionary option to tab through the dictionary. log.c Added #log timestamp . The format follows strftime as described in #help time. Timestamps will be prepended to each line of log output. log.c Added #log move to move files. log.c Added #log remove to remove files. variable.c #format %r now ignores color and escape codes. data.c Added the #info tokenizer option to have a peek at the stack of the scripting engine. Use case example: #event {RECEIVED ERROR} { #echo <118>%h { TOKENIZER }; #info tokenizer -1; #echo <118>%h } path.c #path load now automatically adds reverse directions. mapper.c Added support for #map list {roomflag} {!void} etc. line.c Added #line substitute braces which will turn { and } into \x7B and \x7D. mapper.c Added #map list {{distance}{5}} to list all rooms within a weighted distance of 5. Keep in mind this goes by weight, which starts at 1.0 and increases by 2.0 per room by default. cursor.c Added #cursor flag eol {cr|lf|crlf|crnul|off} to change the default end of line character between \r \n \r\n and \r\0. log.c Changed logging to where it logs data before it's wrapped by the client. mapper.c Added support for roomsymbol lengths up to 5 characters in unicode, and 6 characters in ascii graphics mode. mapper.c Added the option to #map list/find to use * as a roomexit. This will make the search ignore non-pathdir exits without an exit direction. Mar 2021 2.02.11 ------------------------------------------------------------------------------ draw.c #draw BALIGN will push text to the bottom if there aren't enough lines to fill the entire square. main.c Synchronized terminal resize handling which might fix some odd crashes. variable.c Getting rid of #format %C for chronological formatting since I'm abandoning chronological notation support. While it was a cute feature it's more important to support the ? : ternary operation. This frees up the %C argument for a more complex column operation. mapper.c Added support to use #map list 1..6 to provide a vnum range. substitute.c Added \u{} which supports between 2 and 6 hexadecimals. data.c Added the #info input and #info input save option. data.c Added the #info environ and #info environ save option. main.c Added SIGUSR event. %0 will contain either 1 or 2. #event {SIGUSR} {#showme RECEIVED SIGUSR %0} #info system save #system {kill -USR1 $info[SYSTEM][PID] main.c Added SIGHUB event which should trigger when the terminal is closed with TinTin++ still running inside. You can use #event {SIGHUB} {#end} to have tintin close normally. session.c Added #snoop {session} scroll {on|off} to snoop a session's scroll region, which will be printed on top of the active session's screen. math.c Made #math / #if about 3x faster. math.c Updated // to support powers other than 2 and 3. regex.c Changed %w to match any letter, number, or underscore instead of just letters, to make it match \w. Same for %W. Nov 2020 2.02.10 ------------------------------------------------------------------------------ split.c Now allowing #showme {text} {-1} to place text on the input line without #split being enabled. trigger.c Changed #tick to lazily get the second argument. files.c Added the READ FILE [NAME] event, triggers after a file has been read. %0 holds the file name. draw.c Added color gradient support to #draw bar. To use it you must specify two 256 color foreground codes for the color field and based on the min;max value it will pick a color somewhere in between. #loop 1 9 i #draw scroll bar 1 1 1 40 {$i;9;} draw.c Added the BAR drawing type. Currently only horizontal bars are supported, but for forward compatibility you should draw bars using #draw horizontal bar {square} {;;[color]} The width of the bar will be that of the square coordinate. trigger.c Added support for 10 digit precision delays. The main utility of this is execution order. #delay 0.00003 #show A;#delay 0.00002 #show B Since delays are processed in 0.01 second intervals these will both trigger within 0.01 seconds, but the display order will be: B A rathern than A B. path.c Added MAPPING and RUNNING to #path get. MAPPING returns 1 when path mapping, otherwise 0. RUNNING returns the delay until the next run, otherwise 0.00. #path get without an argument will store the length, position, mapping, and running values in a table. trigger.c Storing the creation time of tickers and delays in arg4, can be obtained using #info tickers/delays save. substitute.c Added support to call @function{} as @{function}{}. event.c The SCREEN FOCUS event no longer requires #config mouse to be enabled. math.c % in #math now supports floating point modulo operations. data.c #info will save #info variables to $info[VARIABLES] rather than $info[VARIABLE]. Same for other lists. list.c Added #list {var} filter {keep} {remove}. Keep and remove must be a regex pattern, the keep regex is ignored if {} is used, the remove regex is optional. #list indexate must be used to filter tables. utf8.c Added #config charset cp949 for Korean. Oct 2020 2.02.05 ------------------------------------------------------------------------------ variables.c Added the #unlocal command. files.c Table variables are now written to file with indentation. utf8.c Decreased the memory footprint of BIG-5 / GBK-1 support. variable.c The VARIABLE UPDATE event now reports the path in the %2 argument. May 2020 2.02.04 ------------------------------------------------------------------------------ help.c Updated the MSLP helpfile. scan.c Added #scan forward, does the same as #textin. substitute.c Added a warning when using &variable on an undefined variable in math operations. draw.c Updated the #draw line mode to behave more distinct from the #draw side mode. When teed a horizontal line can have only the left or right side teed when specified. Similarly a vertical line can have the top or bot side teed. banner.c Added the tt++ -g startup option to startup tintin with a gui. So far it only supports a connection manager. main.c Added the SYSTEM CRASH event, %0 holds the error message. screen.c #screen inputregion now takes a 5th argument to assign a name, can be used with the RECEIVED INPUT [NAME] event. screen.c Added #screen swap, swaps the input and scroll region height. mapper.c The MAP ENTER ROOM and MAP EXIT ROOM events will store the direction traveled in the %2 argument. draw.c #draw CALIGN will prune and center text. #draw LALIGN will prune and left align text. #draw RALIGN will prune and right align text. #draw TALIGN will show the top of the text if it is too long to fit the square, cutting off the bottom. The default is to bottom align and cut off the top. #draw UALIGN will unwrap and rewrap text. math.c Added very basic ? : ternary operator support in #math. It currently only supports simple assignments like: #math result $variable < 5 ? 0 : $variable screen.c Added several #screen get INPUT_ options. daemon.c Added DAEMON ATTACHED and DAEMON DETACHED events. mapper.c Added #map flag quiet, gets rid of build walk spam. event.c With mouse pixel mode enabled the %7 argument of a mouse event will contain nw, n, ne, w, c, e, sw, s, se, depending on where on a character you clicked. You can, for example use #if {"%7" == "{nw|w|sw}"} to check if the left side of a character was clicked. help.c Added #help edit and #help editing config.c Added the #config mouse pixels option for pixel precision. Requires the latext xterm or mintty release to work. tokenize.z The default ! repeat character can now be used in scripts. Use with caution. To repeat the last command when you press ctrl-enter use: #macro {\e[13;5u} {!} tintin.h Increased BUFFER_SIZE from 30KB to 40KB. screen.c Added #screen scrollbar on/off, currently only works with mintty / wintin++. Allows using the scrollbar with tintin's own scrollback buffer. Works automatically once enabled. list.c Changed #list simplify to work in a similar manner as #list sort and #list order. draw.c #draw now takes a second color argument. First color argument sets the box color, the second sets the text color. split.c Updated #split to take a 5th argument to set the height of the input region, #split without an argument defaults to #split 0 1 0 0 1. event.c Added event group lookups, can use #event mouse to see all mouse events. edit.c Added the [CATCH] EDIT FINISHED and EDIT STARTED events. cursor.c Added #cursor {page} which has several sub-options that can be used in edit mode. ctrl-home is bound by default to #cursor page home ctrl-end is bound by default to #cursor page end cursor.c Added #cursor {soft enter} which allows inserting new lines while in edit mode, it's bound to shift-enter by default. A regular enter will exit edit mode. edit.c Added the #edit command, used to enter edit mode and perform various edit buffer operations. cursor.c Added #cursor up and #cursor down, moves cursor up/down in multiline input regions. event.c Added the INPUT MOUSE event, which triggers when using the mouse in the input region. cursor.c Added multiline input support. Use #screen inputregion to enable. For example: #screen inputregion -3 1 -1 -1 #split 0 3 cursor.c #cursor preserve macro and reset macro have been moved to #cursor macro {preserve|reset} #cursor echo and #cursor insert have been moved to #cursor flag {echo|insert} {on|off} input.c Added infinite input support, TinTin++ will still crash somewhere down the line until the rest of the engine has infinite string support as well. When CHILD LOCKED the input buffer is capped. class.c Added #event CLASS LOAD , triggers after a class is loaded. Added #event CLASS CLEAR , triggers before a class is cleared. scan.c Added the #scan dir option, will scan the given file or directory and store the info in the provided variable. scan.c Modernized #scan, includes a warning when the old syntax is used. variable.c #return now returns a local result, this should solve issues with function nesting. list.c Added #list {} index {nest} which can be used to index a two dimensional table as a one dimensional list. After a table has been indexed, #list find, order, sort, and reverse will work. triggers.c Added the <900> color tag which can be used in substitutions to restore the text color to the original text color. #sub {\bsmurf\b} {smurf<900>} #showme {A smurf is smurfing here.} draw.c Added the SCALED drawing option. When used the size of the square is increased depending on the size of the inputted text. buffer.c #buffer find now places the found keyword at the top instead of at the bottom of the page. path.c Added #path save {BOTH} to save both the forward and backward path, as well as any given delays. Keep in mind that delays will only work properly for forward going paths. path.c Added a third field to #path insert to specify the delay. mapper.c Added a delay field to #map exits, which will be used when using #path run with a delay argument. data.c Added #info sessions save which will save the data on all sessions to $info[SESSIONS]. data.c #info session save now saves the data to $info[SESSION][NAME] rather than to $info[SESSION][SESSION_NAME] cursor.c Added #cursor position to move the cursor to the given column. show.c Added RECEIVED ERROR event. Example: #event {RECEIVED ERROR} {#info stack} class.c Added #class {name} assign {argument} which will execute the argument, assigning all newly created triggers to the given class. draw.c Added #draw buffer, which draws the scrollback buffer based on the scrolling state. draw.c Added #draw foreground flag, which allows inactive sessions to draw. update.c Added END OF RUN event which triggers at the end of #map or #path run. Mar 2020 2.02.03 ------------------------------------------------------------------------------ data.c Added SESSION_ACTIVE field to #info session save mapper.c Added MAP CREATE EXIT and MAP DELETE EXIT events. history.c Added #history get option. draw.c Added #draw map option. event.c Added MAP ROOM and MAP REGION mouse events. MAP ROOM only triggers when the mouse is above a room, MAP REGION triggers anywhere in the map region, as defined by default or as defined with #map offset. files.c #read will now warn if there is a possibly missing semicolon. config.c Can add non-colors in #config command_color by escaping the characters. Example: #con command <178>\>\ <128> line.c Added #line multishot {number} {argument} which should make all created triggers fire the given number of times before expiring. line.c Added #line local {argument} which should make all indirectly created variables local. variable.c Updated %h to allow #echo %+40h {some text} update.c Added the DISPLAY UPDATE event which is triggered right before the final display update when new data has become available. port.c Added PORT INITIALIZED and PORT UNINITIALIZED events, both can be prefixed with GAG to suppress the default system message. path.c Updated #path unzip to take the new speedwalk format. telopt_client.c Added IAC SB NAWS event, can be caught. split.c Added SCREEN SPLIT FILL event, which triggers on the split line drawing routine, can be caught. memory.c Added a custom memory stack, still a work in progress. utf8.c Added #config charset CP1251TOUTF8 cursor.c Added #cursor {preserve macro} which when called from within a macro will preserve the macro state. Example: #macro {\cg} {#showme e: end\nh: home;#cursor preserve macro} #macro {\cge} {#showme end} #macro {\cgh} {#showme home} cursor.c Added #cursor {reset macro} which when called from within a macro will reset the macro state. path.c Added #path get {LENGTH|POSITION} Jan 2020 2.02.02 ------------------------------------------------------------------------------ config.c Added #config {packet patch} {auto} support which will result in automatic telnet eor/ga handling and automatic packet patching if #prompt is set correctly. help.c Added auto-link generation for #help when mouse tracking is enabled. Still experimental. mapper.c Added #map get/set direction/pathdir to get/set the current direction you are facing in numeric and alphabetic notation. tables.c Added italic and unitalic #highlight keywords. tables.c Pressing ctrl-delete will delete one word per default. mapper.c Fixed #map undo issues with #map insert and #map dig. mapper.c Now shows destination in #map exit base.c Added %+64b and %+64B support to #format to convert to and from base 64 encoding. Added %+64z and %+64Z support to #format to zip the string and convert it to base 64. May not compress it much but may have some utility to store passwords. Security through obscurity. Added experimental %+252b/z and %+252B/Z options for Base 252 encoding. draw.c Added FAT, CURSIVE, SCROLL, and SANSSERIF draw options. input.c ctrl-v will now correctly capture ctrl-alt-f and similar combinations. ctrl-v will also allow pasting blocks of text. Example added to the SCRIPTS file. event.c Added GAG SESSION CONNECTED, GAG SESSION CREATED, GAG SESSION DESTROYED, and GAG SESSION TIMED OUT events. mapper.c Added #map roomflag fog. Works like #map roomflag hide but the flag is auto cleared on entrance. line.c Added #line convert options. mapper.c Aded MAP CREATE ROOM and MAP DELETE ROOM events. utils.c Increased the entropy of the random number generator. list.c #list order sorts existing lists numerically. list.c #list sort sorts existing lists alphabetically. sort.c Added sorting routines utilizing quadsort. list.c Added #list reverse option. cursor.c Added default bindings for ctrl-left, ctrl-right, and ctrl-backspace screen.c Added advanced link support. To create an advanced link surround a keyword with the \e[4m keyword \e24m tags and prefix it with \e]68; code \a. #config mouse on #showme {\e]68;;1;test\a\e[4mthis is a test\e[24m} #event {SHORT-CLICKED LINK MOUSE BUTTON ONE} {#showme {[%4]}} screen.c Added basic link support. To create a basic link surround a keyword with the \e[4m keyword \e[24m tags. When clicked with mouse support enabled it'll spawn a LINK mouse event. mapper.c Added #map exitflag