May 2022 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. map.c Added support for #map list {roomflag} {!void} etc. line.c Added #line substitute braces which will turn { and } into \x7B and \x7D. map.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. map.c Added support for roomsymbol lengths up to 5 characters in unicode, and 6 characters in ascii graphics mode. map.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 DISCONNECTED, 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. map.c Added #map exitflag