1May 2022        2.02.12
2------------------------------------------------------------------------------
3input.c         Added RECEIVED INPUT CHARACTER event that triggers on each
4                character added to the input buffer. %0 holds the character,
5                %1 the unicode index, %2 the byte size, %3 the character's
6                display width.
7
8cursor.c        Added #cursor tab caseless option to make tab completion case
9                incensitive.
10
11dict.c          Added #cursor tab dictionary option to tab through the
12                dictionary.
13
14log.c           Added #log timestamp <format>. The format follows strftime as
15                described in #help time. Timestamps will be prepended to each
16                line of log output.
17
18log.c           Added #log move <filename> <filename> to move files.
19
20log.c           Added #log remove <filename> to remove files.
21
22variable.c      #format %r now ignores color and escape codes.
23
24data.c          Added the #info tokenizer option to have a peek at the stack
25                of the scripting engine. Use case example:
26
27                #event {RECEIVED ERROR}
28                {
29                    #echo <118>%h { TOKENIZER };
30                    #info tokenizer -1;
31                    #echo <118>%h
32                }
33
34path.c          #path load now automatically adds reverse directions.
35
36map.c           Added support for #map list {roomflag} {!void} etc.
37
38line.c          Added #line substitute braces which will turn { and } into
39                \x7B and \x7D.
40
41map.c           Added #map list {{distance}{5}} to list all rooms within a
42                weighted distance of 5. Keep in mind this goes by weight,
43                which starts at 1.0 and increases by 2.0 per room by default.
44
45cursor.c        Added #cursor flag eol {cr|lf|crlf|crnul|off} to change the
46                default end of line character between \r \n \r\n and \r\0.
47
48log.c           Changed logging to where it logs data before it's wrapped by
49                the client.
50
51map.c           Added support for roomsymbol lengths up to 5 characters in
52                unicode, and 6 characters in ascii graphics mode.
53
54map.c           Added the option to #map list/find to use * as a roomexit.
55                This will make the search ignore non-pathdir exits without
56                an exit direction.
57
58Mar 2021        2.02.11
59------------------------------------------------------------------------------
60draw.c          #draw BALIGN will push text to the bottom if there aren't
61                enough lines to fill the entire square.
62
63main.c          Synchronized terminal resize handling which might fix some odd
64                crashes.
65
66variable.c      Getting rid of #format %C for chronological formatting since
67                I'm abandoning chronological notation support. While it was
68                a cute feature it's more important to support the ? : ternary
69                operation. This frees up the %C argument for a more complex
70                column operation.
71
72mapper.c        Added support to use #map list 1..6 to provide a vnum range.
73
74substitute.c    Added \u{} which supports between 2 and 6 hexadecimals.
75
76data.c          Added the #info input and #info input save option.
77
78data.c          Added the #info environ and #info environ save option.
79
80main.c          Added SIGUSR event. %0 will contain either 1 or 2.
81                #event {SIGUSR} {#showme RECEIVED SIGUSR %0}
82		#info system save
83		#system {kill -USR1 $info[SYSTEM][PID]
84
85main.c          Added SIGHUB event which should trigger when the terminal is
86                closed with TinTin++ still running inside. You can use
87                #event {SIGHUB} {#end} to have tintin close normally.
88
89session.c       Added #snoop {session} scroll {on|off} to snoop a session's
90                scroll region, which will be printed on top of the active
91                session's screen.
92
93math.c          Made #math / #if about 3x faster.
94
95math.c          Updated // to support powers other than 2 and 3.
96
97regex.c         Changed %w to match any letter, number, or underscore instead
98                of just letters, to make it match \w. Same for %W.
99
100Nov 2020        2.02.10
101
102------------------------------------------------------------------------------
103
104split.c         Now allowing #showme {text} {-1} to place text on the input
105                line without #split being enabled.
106
107trigger.c       Changed #tick to lazily get the second argument.
108
109files.c         Added the READ FILE [NAME] event, triggers after a file has
110                been read. %0 holds the file name.
111
112draw.c          Added color gradient support to #draw bar. To use it you
113                must specify two 256 color foreground codes for the color
114                field and based on the min;max value it will pick a color
115                somewhere in between.
116
117		#loop 1 9 i #draw <DDF> scroll bar 1 1 1 40 {$i;9;<faa><afa>}
118
119draw.c          Added the BAR drawing type. Currently only horizontal bars
120                are supported, but for forward compatibility you should draw
121                bars using #draw horizontal bar {square} {<min>;<max>;[color]}
122                The width of the bar will be that of the square coordinate.
123
124trigger.c       Added support for 10 digit precision delays. The main
125                utility of this is execution order.
126
127                #delay 0.00003 #show A;#delay 0.00002 #show B
128
129                Since delays are processed in 0.01 second intervals these will
130                both trigger within 0.01 seconds, but the display order will
131                be: B A rathern than A B.
132
133path.c          Added MAPPING and RUNNING to #path get.
134
135                MAPPING returns 1 when path mapping, otherwise 0.
136                RUNNING returns the delay until the next run, otherwise 0.00.
137
138                #path get <variable> without an argument will store the
139                length, position, mapping, and running values in a table.
140
141trigger.c       Storing the creation time of tickers and delays in arg4, can
142                be obtained using #info tickers/delays save.
143
144substitute.c    Added support to call @function{} as @{function}{}.
145
146event.c         The SCREEN FOCUS event no longer requires #config mouse to
147                be enabled.
148
149math.c          % in #math now supports floating point modulo operations.
150
151data.c          #info will save #info variables to $info[VARIABLES] rather
152                than $info[VARIABLE]. Same for other lists.
153
154list.c          Added #list {var} filter {keep} {remove}. Keep and remove
155                must be a regex pattern, the keep regex is ignored if {} is
156                used, the remove regex is optional. #list indexate must be
157                used to filter tables.
158
159utf8.c          Added #config charset cp949 for Korean.
160
161Oct 2020        2.02.05
162------------------------------------------------------------------------------
163
164variables.c     Added the #unlocal command.
165
166files.c         Table variables are now written to file with indentation.
167
168utf8.c          Decreased the memory footprint of BIG-5 / GBK-1 support.
169
170variable.c      The VARIABLE UPDATE event now reports the path in the %2
171                argument.
172
173May 2020        2.02.04
174------------------------------------------------------------------------------
175
176help.c          Updated the MSLP helpfile.
177
178scan.c          Added #scan forward, does the same as #textin.
179
180substitute.c    Added a warning when using &variable on an undefined variable
181                in math operations.
182
183draw.c          Updated the #draw line mode to behave more distinct from the
184                #draw side mode. When teed a horizontal line can have only
185                the left or right side teed when specified. Similarly a
186                vertical line can have the top or bot side teed.
187
188banner.c        Added the tt++ -g startup option to startup tintin with a gui.
189                So far it only supports a connection manager.
190
191main.c          Added the SYSTEM CRASH event, %0 holds the error message.
192
193screen.c        #screen inputregion now takes a 5th argument to assign a
194                name, can be used with the RECEIVED INPUT [NAME] event.
195
196screen.c        Added #screen swap, swaps the input and scroll region height.
197
198mapper.c        The MAP ENTER ROOM and MAP EXIT ROOM events will store the
199                direction traveled in the %2 argument.
200
201draw.c          #draw CALIGN will prune and center text.
202
203                #draw LALIGN will prune and left align text.
204
205                #draw RALIGN will prune and right align text.
206
207                #draw TALIGN will show the top of the text if it is too long
208                to fit the square, cutting off the bottom. The default is to
209                bottom align and cut off the top.
210
211                #draw UALIGN will unwrap and rewrap text.
212
213math.c          Added very basic ? : ternary operator support in #math. It
214                currently only supports simple assignments like:
215                #math result $variable < 5 ? 0 : $variable
216
217screen.c        Added several #screen get INPUT_ options.
218
219daemon.c        Added DAEMON ATTACHED and DAEMON DETACHED events.
220
221mapper.c        Added #map flag quiet, gets rid of build walk spam.
222
223event.c         With mouse pixel mode enabled the %7 argument of a mouse
224                event will contain nw, n, ne, w, c, e, sw, s, se, depending
225                on where on a character you clicked.
226
227                You can, for example use #if {"%7" == "{nw|w|sw}"} to check
228                if the left side of a character was clicked.
229
230help.c          Added #help edit and #help editing
231
232config.c        Added the #config mouse pixels option for pixel precision.
233                Requires the latext xterm or mintty release to work.
234
235tokenize.z      The default ! repeat character can now be used in scripts.
236                Use with caution. To repeat the last command when you press
237                ctrl-enter use: #macro {\e[13;5u} {!}
238
239tintin.h        Increased BUFFER_SIZE from 30KB to 40KB.
240
241screen.c        Added #screen scrollbar on/off, currently only works with
242                mintty / wintin++. Allows using the scrollbar with tintin's
243                own scrollback buffer. Works automatically once enabled.
244
245list.c          Changed #list simplify to work in a similar manner as
246                #list sort and #list order.
247
248draw.c          #draw now takes a second color argument. First color argument
249                sets the box color, the second sets the text color.
250
251split.c         Updated #split to take a 5th argument to set the height of
252                the input region, #split without an argument defaults to
253                #split 0 1 0 0 1.
254
255event.c         Added event group lookups, can use #event mouse to see all
256                mouse events.
257
258edit.c          Added the [CATCH] EDIT FINISHED and EDIT STARTED events.
259
260cursor.c        Added #cursor {page} which has several sub-options that can
261                be used in edit mode.
262
263                ctrl-home is bound by default to #cursor page home
264                ctrl-end  is bound by default to #cursor page end
265
266cursor.c        Added #cursor {soft enter} which allows inserting new lines
267                while in edit mode, it's bound to shift-enter by default. A
268                regular enter will exit edit mode.
269
270edit.c          Added the #edit command, used to enter edit mode and perform
271                various edit buffer operations.
272
273cursor.c        Added #cursor up and #cursor down, moves cursor up/down in
274                multiline input regions.
275
276event.c         Added the INPUT MOUSE event, which triggers when using the
277                mouse in the input region.
278
279cursor.c        Added multiline input support. Use #screen inputregion to
280                enable. For example:
281
282                #screen inputregion -3 1 -1 -1
283                #split 0 3
284
285cursor.c        #cursor preserve macro and reset macro have been moved to
286                #cursor macro {preserve|reset}
287
288                #cursor echo and #cursor insert have been moved to
289                #cursor flag {echo|insert} {on|off}
290
291input.c         Added infinite input support, TinTin++ will still crash
292                somewhere down the line until the rest of the engine has
293                infinite string support as well. When CHILD LOCKED the
294                input buffer is capped.
295
296class.c         Added #event CLASS LOAD <NAME>, triggers after a class is
297                loaded.
298                Added #event CLASS CLEAR <NAME>, triggers before a class is
299                cleared.
300
301scan.c          Added the #scan dir <dir> <variable> option, will scan the
302                given file or directory and store the info in the provided
303                variable.
304
305scan.c          Modernized #scan, includes a warning when the old syntax is
306                used.
307
308variable.c      #return now returns a local result, this should solve issues
309                with function nesting.
310
311list.c          Added #list {<list>} index {nest} which can be used to index
312                a two dimensional table as a one dimensional list. After a
313                table has been indexed, #list find, order, sort, and reverse
314                will work.
315
316triggers.c      Added the <900> color tag which can be used in substitutions
317                to restore the text color to the original text color.
318
319                #sub {\bsmurf\b} {<bdf>smurf<900>}
320                #showme {<afa>A smurf is smurfing here.}
321
322draw.c          Added the SCALED drawing option. When used the size of the
323                square is increased depending on the size of the inputted
324                text.
325
326buffer.c        #buffer find now places the found keyword at the top instead
327                of at the bottom of the page.
328
329path.c          Added #path save {BOTH} <variable> to save both the forward
330                and backward path, as well as any given delays. Keep in mind
331                that delays will only work properly for forward going paths.
332
333path.c          Added a third field to #path insert to specify the delay.
334
335mapper.c        Added a delay field to #map exits, which will be used
336                when using #path run with a delay argument.
337
338data.c          Added #info sessions save which will save the data on all
339                sessions to $info[SESSIONS].
340
341data.c          #info session save now saves the data to $info[SESSION][NAME]
342                rather than to $info[SESSION][SESSION_NAME]
343
344cursor.c        Added #cursor position <column> to move the cursor to the
345                given column.
346
347show.c          Added RECEIVED ERROR event. Example:
348                #event {RECEIVED ERROR} {#info stack}
349
350class.c         Added #class {name} assign {argument} which will execute the
351                argument, assigning all newly created triggers to the given
352                class.
353
354draw.c          Added #draw buffer, which draws the scrollback buffer based
355                on the scrolling state.
356
357draw.c          Added #draw foreground flag, which allows inactive sessions
358                to draw.
359
360update.c        Added END OF RUN event which triggers at the end of #map or
361                #path run.
362
363Mar 2020        2.02.03
364------------------------------------------------------------------------------
365
366data.c          Added SESSION_ACTIVE field to #info session save
367
368mapper.c        Added MAP CREATE EXIT and MAP DELETE EXIT events.
369
370history.c       Added #history get <variable> <start> <end> option.
371
372draw.c          Added #draw map <square> option.
373
374event.c         Added MAP ROOM and MAP REGION mouse events. MAP ROOM only
375                triggers when the mouse is above a room, MAP REGION triggers
376                anywhere in the map region, as defined by default or as
377                defined with #map offset.
378
379files.c         #read will now warn if there is a possibly missing semicolon.
380
381config.c        Can add non-colors in #config command_color by escaping the
382                characters. Example: #con command <178>\>\ <128>
383
384line.c          Added #line multishot {number} {argument} which should make
385                all created triggers fire the given number of times before
386                expiring.
387
388line.c          Added #line local {argument} which should make all indirectly
389                created variables local.
390
391variable.c      Updated %h to allow #echo %+40h {some text}
392
393update.c        Added the DISPLAY UPDATE event which is triggered right
394                before the final display update when new data has become
395                available.
396
397port.c          Added PORT INITIALIZED and PORT UNINITIALIZED events, both
398                can be prefixed with GAG to suppress the default system
399                message.
400
401path.c          Updated #path unzip to take the new speedwalk format.
402
403telopt_client.c Added IAC SB NAWS event, can be caught.
404
405split.c         Added SCREEN SPLIT FILL event, which triggers on the
406                split line drawing routine, can be caught.
407
408memory.c        Added a custom memory stack, still a work in progress.
409
410utf8.c          Added #config charset CP1251TOUTF8
411
412cursor.c        Added #cursor {preserve macro} which when called from within
413                a macro will preserve the macro state. Example:
414
415                #macro {\cg} {#showme e: end\nh: home;#cursor preserve macro}
416                #macro {\cge} {#showme end}
417                #macro {\cgh} {#showme home}
418
419cursor.c        Added #cursor {reset macro} which when called from within
420                a macro will reset the macro state.
421
422path.c          Added #path get {LENGTH|POSITION} <variable>
423
424Jan 2020        2.02.02
425------------------------------------------------------------------------------
426
427config.c        Added #config {packet patch} {auto} support which will
428                result in automatic telnet eor/ga handling and automatic
429                packet patching if #prompt is set correctly.
430
431help.c          Added auto-link generation for #help when mouse tracking is
432                enabled. Still experimental.
433
434mapper.c        Added #map get/set direction/pathdir to get/set the current
435                direction you are facing in numeric and alphabetic notation.
436
437tables.c        Added italic and unitalic #highlight keywords.
438
439tables.c        Pressing ctrl-delete will delete one word per default.
440
441mapper.c        Fixed #map undo issues with #map insert and #map dig.
442
443mapper.c        Now shows destination in #map exit <dir>
444
445base.c          Added %+64b and %+64B support to #format to convert to and
446                from base 64 encoding.
447
448                Added %+64z and %+64Z support to #format to zip the string
449                and convert it to base 64. May not compress it much but may
450                have some utility to store passwords. Security through
451                obscurity.
452
453                Added experimental %+252b/z and %+252B/Z options for Base
454                252 encoding.
455
456draw.c          Added FAT, CURSIVE, SCROLL, and SANSSERIF draw options.
457
458input.c         ctrl-v will now correctly capture ctrl-alt-f and similar
459                combinations. ctrl-v will also allow pasting blocks of text.
460                Example added to the SCRIPTS file.
461
462event.c         Added GAG SESSION CONNECTED, GAG SESSION CREATED,
463                GAG SESSION DISCONNECTED, and GAG SESSION TIMED OUT events.
464
465mapper.c        Added #map roomflag fog. Works like #map roomflag hide but
466                the flag is auto cleared on entrance.
467
468line.c          Added #line convert options.
469
470mapper.c        Aded MAP CREATE ROOM and MAP DELETE ROOM events.
471
472utils.c         Increased the entropy of the random number generator.
473
474list.c          #list order sorts existing lists numerically.
475
476list.c          #list sort sorts existing lists alphabetically.
477
478sort.c          Added sorting routines utilizing quadsort.
479
480list.c          Added #list reverse option.
481
482cursor.c        Added default bindings for ctrl-left, ctrl-right, and
483                ctrl-backspace
484
485screen.c        Added advanced link support. To create an advanced link
486                surround a keyword with the \e[4m keyword \e24m tags and
487                prefix it with \e]68; code \a.
488
489                #config mouse on
490                #showme {\e]68;;1;test\a\e[4mthis is a test\e[24m}
491                #event {SHORT-CLICKED LINK MOUSE BUTTON ONE} {#showme {[%4]}}
492
493screen.c        Added basic link support. To create a basic link surround a
494                keyword with the \e[4m keyword \e[24m tags. When clicked with
495                mouse support enabled it'll spawn a LINK mouse event.
496
497map.c           Added #map exitflag <dir> <option> GET <variable> support.
498
499event.c         The %4 argument of mouse clicks once again reports the word
500                that has been clicked, with %5 reporting the line. Under
501                construction.
502
503screen.c        Added #screen input <square> to define the input region.
504                Currently only 1 line input regions are supported. Example:
505                #screen input 1 1 1 -1 will put the input line at the top of
506                the screen instead of the bottom. Under construction.
507
508Dec 2019        2.02.01
509------------------------------------------------------------------------------
510data.c          Added CWD field to #info system to get the current working
511                directory.
512
513data.c          Added the option to use #var var[\+1] to set and retrieve a
514                literal +1 instead of referencing the first index. This
515                behaves like the verbatim mode and the backslash is only
516                valid at the start of the line.
517
518data.c          Added #info unicode <character> option to display
519                information about the provided character.
520
521Nov 2019        2.02.00
522------------------------------------------------------------------------------
523
524regex.c         Added support for using %+4s to match 4 spaces, or %+0..2d
525                to match between 0 and 2 digits. Only works with letter
526                arguments.
527
528regex.c         Added %a regex as an alternative for %* because %+4* is
529                not valid.
530
531regex.c         Added %p regex which will match printable characters.
532
533regex.c         Added %u regex which should match whole unicode characters.
534
535utf8.c          Added BIG5toUTF8, KOI8toUTF8, ISO1toUTF8, ISO2toUTF8 charset
536                config options.
537
538utf8.c          Added GBK1TOUTF8 charset config option. When enabled 2 byte
539                GBK codes are translated to unicode.
540
541utf8.c          Added GBK-1 charset config option which should be able to
542                handle GB18030.
543
544mapper.c        Added a UNICODE GRAPHICS group to #map legend, this will
545                allow you to customize most of the unicodegraphics symbols.
546
547variable.c      Added #format <variable> %S option to do a spell check.
548                Returns the number of errors found. Still a work in
549                progress.
550
551                People using %S to get the session name should switch to
552                using #info session save.
553
554data.c          Added #info session option, this data can be saved.
555
556draw.c          Added #draw RAIN {<VARIABLE>} {[SPAWN]} {[FADE]} {[LEGEND]}
557
558                Use tt++ -M for a default example.
559
560class.c         Added #class clear, load, and save. See #help class.
561
562main.c          Configurations and pathdirs are automatically assigned to
563                the CONFIG and PATHDIR class on startup. Somewhat
564                experimental as there may be unforseen complications.
565
566list.c          Added #list <list> collapse and explode
567
568mapper.c        Updated #map {} output.
569
570nest.c          Added better #local support.
571
572variable.c      Added #cat command. See #help cat.
573
574event.c         Added SWIPED N/NE/E/SE/S/SW/W/NW events. These do not work
575                on Termux yet, but I've asked the Termux dev to enable
576                advanced mouse mode by default.
577
578draw.c          Added #draw TABLE type which comes with the GRID option to
579                change the drawing behavior. Requires a nested string
580                argument. Under construction.
581
582mapper.c        Added #map flag terrain on/off option to enable or disable
583                terrain displaying. Default for new maps is on.
584
585mapper.c        Added #map terrain <name> <symbol> [flag] and #map unterrain
586                Creates a symbol, which can be colored, for the given
587                terrain type. Density flags are DENSE, AMPLE, SPARSE, SCANT,
588                omit for default density. Range flags are NARROW, STANDARD,
589                WIDE, and VAST, omit for default.
590
591                Decay flags are FADEIN and FADEOUT which speak for
592                themselves. DOUBLE will expect the terrain symbol to be
593                2 characters or a double-width unicode character.
594
595variable.c      Added %C format option to store the given number using
596                chronological notation.
597
598                People using %C to get the screen width should switch to
599                using #screen get cols <var> and #screen get rows <var>
600
601mapper.c        Added a 4th argument to landmarks which will indicate the
602                distance from which the landmark will be visible in a future
603                #map describe command.
604
605draw.c          Added HUGE option to #draw. Only supports uppercase letters,
606                numbers, and a few punctuations for now.
607
608cursor.c        Added #cursor tab <list|scrollback> <backward|forward>
609                option. Allows people with custom tab settings to upgrade
610                to the new format before I start messing with it.
611
612                list goes exclusively through the tab list, scrollback goes
613                exclusively through the scrollback buffer, use both list and
614                scrollback to go through both.
615
616line.c          Added #line capture <variable> <command> option.
617
618mapper.c        Added the MAP MOUSE LOCATION event to go along with the
619                SCREEN MOUSE LOCATION event. MAP MOUSE LOCATION is more
620                accurate than regular MAP click events. It needs to be
621                trigged with #screen raise mouse location, which is not
622                supported by all terminals.
623
624                You'll need to use ./configure --enable-dec-locator for xterm
625                to enable the MOUSE LOCATION events.
626
627
628list.c          Added #list <var> shuffle
629
630mapper.c        I'm working on a new speedwalk standard that will work with
631                diagonal exits. Initial support is added to the #map at,
632                #map goto, and the #map jump commands. Old speedwalk support
633                is going to be left unchanged.
634
635                The format is similar to old speed walks, except that
636                speedwalks like 2ene need to be changed to 2e1n1e.
637
638                #map jump and #map at will use virtual traversal, meaning you
639                can move through walls as long as the destination is an actual
640                location.
641
642                #map move and #map goto will use physical traversal, meaning
643                #map goto 10w only works if there is a straight line of 10
644                rooms leading west, while #map move 10w will create 10 rooms
645                if static mode is disabled. Keep in mind that #map move will
646                trigger map movements events while #map goto will not.
647
648                Regular #config SPEEDWALK speedwalks are unaffected.
649
650mapper.c        Added MAP MOUSE LOCATION event which allows more accurate
651                mouse clicking reports in unicode mode on terminals which
652                support it. Appears to be some obscure compile time option
653                on xterm.
654
655mapper.c        AsciiGraphics and UnicodeGraphics mapping modes now report
656                the exit that was clicked on MAP MOUSE click events in the
657                %2 argument.
658
659screen.c        Added #screen raise SCREEN MOUSE LOCATION, the SCREEN MOUSE
660                LOCATION in turn will report row,col,-row,-col, as well as
661                the row,col,-row,-col for the pixel position of the mouse
662                within the character cell. %8 will report the pixel position
663                as a 3x3 cell using values 1 through 9.
664
665mapper.c        Added the BLOCK exit flag and room flag. Works like AVOID,
666                but also prevents movement into the room.
667
668mapper.c        Added #map landmark <name> <vnum> [desc] and #map unlandmark.
669                Landmarks work as fast lookup aliases and to give tintin an
670                idea of locations of interest to eventually describe the map
671                in words for screen readers.
672
673mapper.c        Added #map exit <dir> color <code> option.
674
675mapper.c        Added exit coloring for avoid/hide/invis flagged exits.
676
677main.c          Added -V startup option to show version number.
678
679daemon.c        Added better link lost handling to daemons.
680
681cursor.c        Fixed #help event section on {SCREEN FOCUS}.
682
683math.c          Added metric suffix support to #math, see #help metric.
684
685variable.c      Added #echo %M to print numbers using the metric system,
686                supported suffixes are K M, m, and u.
687
688mapper.c        Added #map sync <filename> which will try to synchronize the
689                currently loaded map with the file being read. Should be a
690                valid alternative to #map read at all times.
691
692Sep 2019        2.01.92
693------------------------------------------------------------------------------
694
695mapper.c        Added #map dig <exit> {{roomid}{<key>}} {NEW} support.
696                Added #map goto {{roomid}{<key>}} {DIG} support.
697
698mapper.c        Added the roomid field to map rooms. When using #map goto or
699                #map run on a roomid regular expressions cannot be used.
700                Roomid's are case sensitive, must be matched exactly, and
701                are expected to be unique.
702
703daemon.c        Added #daemon {kill|list}. See #help daemon.
704
705daemon.c        Added #daemon {attach|detach}. See #help daemon.
706
707main.c          Can launch tt++ with the -R argument to reattach.
708
709data.c          Added #info MCCP option.
710
711draw.c          Added TUBED drawing option.
712
713scan.c          Added #scan FILE {commands} option. See #help scan.
714
715map.c           Can provide multiple ; separated commands to #map move at
716                once. For example: #map move {n;e;s;w}
717
718main.c          Added support for starting tintin with telnet://host:port
719
720draw.c          Added ANSI, UNICODE, JEWELED and FILLED prefixes.
721
722tables.c        Removed #forall command.
723
724mapper.c        Added #map center <x> <y> <z> to set the center of the map
725                viewer, default is 0 0 0.
726
727split.c         Added SCREEN SPLIT and SCREEN UNSPLIT events.
728
729nest.c          Added VARIABLE UPDATED event.
730
731draw.c          Added the BUMPED prefix to prefix a scroll region box with an
732                enter. You create a scroll region box by using 0 as the top
733                row argument. Treat the other arguments as if the top row
734                is set to 1.
735
736draw.c          Finished rounded box drawing, to get the old behavior use
737                the CIRCLED prefix.
738
739config.c        Added #config {mouse tracking} {on|off|debug|info|debug info}
740                to enable/disable info/debugging for all mouse clicks.
741                Use #config {mouse tracking} {on} to reset to normal.
742
743help.c          Updated #help regex to state that %. and %+ should no longer
744                be used. This will allow future expansion of tintin's regex
745                syntax. Use {.} and {.+} and {.?+} instead.
746
747variable.c      Added support for %+10w and %-10w to #format. Negative numbers
748                subtract the given value from the screen width when wrapping.
749
750text.c          Added initial tab displaying support.
751
752config.c        Added TAB WIDTH config option.
753
754nest.c          Added a notice for people still using $variable[] instead of
755                *variable[]. I'll change $variable[] eventually to be
756                identical to $variable[%*].
757
758math.c          Added .. ellipsis support to define ranges in tables. It can
759                also be used in #math to join two 32 bit integers into a 64
760                bit integer.
761
762terminal.c      Now initializing a more advanced keyboard mode upon startup,
763                if a macro stops working check if you have to redefine it to
764                a new sequence.
765
766math.c          By default tintin does a string vs regex comparison when
767                using == and !=. Added === and !== to do string vs string
768                comparisons.
769
770config.c        Made configurations less lazy, making it easier to detect
771                when settings aren't properly inherited or changed globally.
772
773screen.c        Added #screen scroll option, similar to #split but uses square
774                notation to define the scroll region.
775
776screen.c        Added #screen fill option.
777
778terminal.c      Added SCREEN ROTATE PORTRAIT and SCREEN ROTATE LANDSCAPE
779                events.
780
781mapper.c        #map offset will now rescale along with the window.
782
783split.c         The #split command has been changed to where it sets the
784                number of top split lines if only one argument is given.
785
786                The 2nd argument sets the number of bottom split lines which
787                defaults to 1. The 3rd and 4th argument set the left and right
788                split lines and when used will automatically enable vertical
789                split mode.
790
791                Split initalization will use unicode if #config charset is
792                set to utf-8
793
794buffer.c        The #buffer get syntax has been changed to treat 1 as the
795                oldest line in the buffer, and -1 as the most recent.
796                Unfortunately that's not backward compatible, but it's in
797                line with the other row behavior changes, so at least it
798                will be consistent.
799
800text.c          With #split enabled and #config wordwrap set to a positive
801                value tintin++ will attempt a vertical split.
802
803draw.c          More feature complete, see #help draw.
804
805vt100.c         Added better cursor save/restore handling.
806
807update.c        Added support for centisecond delays (0.01) and moved ticks to
808                deciseconds (0.1).
809
810                Reduced input and session polling lag from 25 ms to 5 ms,
811                which comes at a slight increase in cpu usage.
812
813draw.c          Added TEED prefix for #draw, subsequently #draw middle and
814                #draw center have been removed as they did the same and
815                were somewhat confusing terms.
816
817misc.c          Added some #bell options, see #help bell.
818                #bell {flash|focus|margin|ring|volume} {argument}
819
820variable.c      #format %X now will also take unicode characters as input.
821                #echo %X ┓ displays 2513 and #showme \u2513 displays ┓
822
823path.c          #path run no longer uses delays but uses its own timer system,
824                you can use #path stop to stop running, and if you enter
825                #path run again you'll continue where you stopped.
826
827trigger.c       Named delays are now automatically converted to one shot
828                triggers. #undelay will use #untick if the argument begins
829                with a letter.
830
831mapper.c        Changed #map destroy to #map destroy {area|world} {arg}
832
833files.c         Added {READ ERROR} and {WRITE ERROR} events.
834
835trigger.c       Added #line oneshot support to all triggers and variables.
836
837line.c          Added #line oneshot to create oneshot triggers. Right now
838                only works for #ticker.
839
840line.c          Added #line debug to execute given line in debug mode.
841
842substitute.c    #config color is now taken into account when displaying
843                color codes, downgrading colors as needed.
844
845tables.c        When using color names in highlights all lowercase color names
846                will be dark by default, while capitalized color names
847                will be light. So 'blue' is dark while 'Blue' is light. This
848                allows using 'b Blue' for a light blue background.
849
850draw.c          Added the ability to prefix a draw option with a color name
851                or color code to draw colored lines and boxes.
852
853Aug 2019        2.01.91
854------------------------------------------------------------------------------
855vt100.c         Added %2 rows %3 cols arguments to the VT100 SCROLL REGION
856                event to increase ease of use.
857
858mapper.c        Changed #map at to also take an exit for the location.
859
860data.c          No longer saving or displaying the priority of triggers which
861                are set to the default priority.
862
863mapper.c        Added #map map <rows> <cols> draw <square> to draw the map at
864                the given location. This is no real alternative for using #map
865                offset as #map offset allows mouse map events.
866
867draw.c          Added unicode drawing options.
868
869line.c          Added #line logmode {html|plain|raw} {argument} Allows you
870                to execute a command with a temporary logging mode.
871
872mapper.c        Now drawing + and - for muds using nu dn eu ed exits.
873
874macro.c         Added ^ support to macros to make a macro only trigger at the
875                start of input. If you want to macro a literal ^ use \^ at
876                the start of the line. It behaves very similar to the ~ for
877                color triggers.
878
879mapper.c        Improved exit drawing in unicode mode.
880
881draw.c          Added #draw command and #help file.
882
883mapper.c        Added #map update option to force an update of the vtmap. Keep
884                in mind the vtmap will only update once every 0.1 seconds.
885
886screen.c        Added #screen clear {split|top|bottom} to clear split lines.
887
888config.c        Added #config {wordwrap {on|off|number} when a number is given
889                tintin will wrap at the given width, and will also report the
890                given width to MUDs over TELNET.
891
892config.c        Added #config {telnet} {on|off|debug} which allows enabling or
893                disabling telnet support. The debug option is the same as
894                #config {debug telnet} on and will eventually replace it. To
895                disable debug mode use #config telnet on.
896
897help.c          Added #help button
898
899button.c        Added #button.
900
901Jul 2019        2.01.90
902------------------------------------------------------------------------------
903mapper.c        Added MAP FOLLOWED MAP event which triggers on map movement.
904                %0 = new vnum %1 = old vnum %2 = exit name. Keep in mind
905                that this event isn't triggered when using #map goto.
906
907config.c        Added #config {PACKET PATCH {AUTO} option which currently
908                only enables to 0.1 seconds when #split is enabled.
909
910msdp.c          Added MAP_ROOM_INFO msdp event.
911
912math.c          Strings in #if and #math can now be defined using {string}
913                instead of "string". The quote syntax will remain valid.
914
915mapper.c        Added #map offset <row> <col> <row> <col> to define a square
916                within which the vt map will be printed.
917
918screen.c        Added #screen clear option which allows clearing the screen,
919                the scrolling region, or a <row> <col> <row> <col> square.
920                For all square operations you must define the top left and
921                bottom right corner. Negative numbers are allowed which
922                behave identical to #showme.
923
924mapper.c        #map map now allows a very large range and when logging will
925                use the configured log mode. This allows generating a large
926                html map.
927
928mapper.c        Improved the #map legend interface and made it easier to
929                update by using the index number. I haven't added special
930                legends for ascii and unicode graphic modes yet.
931
932buffer.c        Added #buffer up 1 and #buffer down 1 to scroll the buffer up
933                or down by one line. Values of 2 and higher are allowed as
934                well with the maximum set at the screen size.
935
936msdp.c          Added some SCREEN based MSDP events to #port. Renamed a few
937                #screen arguments / events to something I was happier with.
938
939chat.c          Added #chat accept <buddy> [boost] option for faster file
940                transfer. The boost value must be between 1 and 1000.
941
942screen.c        Added #screen get <top_row|bot_row|top_split|bot_split> <var>
943
944vt100.c         Added VT100 SCROLL REGION event.
945
946main.c          Added SYSTEM ERROR and CATCH SYSTEM ERROR events.
947
948mapper.c        Added #map color symbol option.
949
950files.c         Added accidental overwrite protection when trying to write
951                a command file to a .map file. Use {force} to force. It's
952                suggested to use .tin files for command files.
953
954mapper.c        Added accidental overwrite protection when trying to save a
955                map to a .tin file. Can add the {force} argument to force
956                writing anyways. It's suggested to use .map for map files.
957
958mapper.c        Made all map search options require a perfect match. To look
959                for a sub string one needs to use #map find {text%*} or
960                #map find {%*text%*}
961
962mapper.c        Exits created in the global room should now work without
963                needing to set a special alias that performs a #map goto.
964                This also means that if you set the exit command on an exit
965                in the global room it ought to work.
966
967mccp.c          Enabled MCCP3 for #port which allows two-way compression.
968                This should be useful for people who send a lot of data back
969                and forth. It uses TELNET option code 87.
970
971port.c          Added initial telnet support to #port. This still needs some
972                more work to get MSDP working, and I'm also working on
973                the ability to use JSON syntax with MSDP event handling.
974
975telopt_server.c Enabled.
976
977parse.c         Added a debug call for incorrect abbreviation checks.
978
979mapper.c        Added invisible exit flag. It's intended to make exits
980                invisible. If you want to make hidden rooms invisible try
981                #map color hide <208>
982
983mapper.c        Added up/down exit flag colors in unicodegraphics mode.
984
985screen.c        Added some more screen stuff, see #help screen.
986
987parse.c         Added experimental change where in command lookups a space
988                can be substituted with a _ character. For example
989                #config {COMMAND ECHO} ON equals #config COMMAND_ECHO ON.
990
991                If this change causes unforseen problems it'll likely be
992                reverted.
993
994telopt_client.c No longer sending proper telnet replies for echo due to
995                infinite loop problems on a few muds that improperly
996                handle telnet negotiations.
997
998mapper.c        Improved void room handling in unicodegraphics mode.
999
1000prompt.c        Using #prompt or #showme without a column argument will
1001                clear the line.
1002
1003main.c          Improved signal handling.
1004
1005update.c        The %2 value of TIME events now holds the day of the week
1006                instead of the week of the year. The value is between 0 and 6
1007                and specific events for each week day are possible.
1008
1009update.c        The %3 value of TIME events holds the day of the month. The
1010                value is between 0 and 31 and specific events for a day of the
1011                month are now possible.
1012
1013main.c          Updated system error handling.
1014
1015mapper.c        Improved #map color command.
1016
1017mapper.c        Further improved unicodegraphics mode.
1018
1019mapper.c        Further improved blockgraphics mode.
1020
1021mapper.c        Added #map color avoid
1022
1023mapper.c        Added #map color hide
1024
1025prompt.c        Changed #prompt to use the new {row} {col} input.
1026
1027mapper.c        Changed the #map map command which now has the syntax:
1028
1029                #map map {rows} {cols} {append|write|list|variable} {arg}
1030
1031terminal.c      Changed WINDOW RESIZE %0 to list rows, and %1 to list cols.
1032
1033event.c         Changed all MOUSE events to %0=row %1=col %2=-row %3=-row
1034
1035*.c             Currently there are two big problems that need to be addressed
1036                to continue smooth development.
1037
1038                1. In VT100 row 1 is the top line, while in tintin row 1 is
1039                   the split line.
1040                2. In VT100 row, col (y, x) notation is used, while I've been
1041                   favoring col, row (x, y) notation.
1042
1043                While this may seem like a minor issue, I'm utilizing VT100
1044                more often using more complex operations, and TinTin++ is
1045                currently pretty much mirrored in the way it behaves. This
1046                results in relatively simple math becoming weird unintuitive
1047                math, making already complex code even more complex, resulting
1048                in bugs and unreadable code that requires a lot of mental
1049                gymnastics to figure out.
1050
1051                Subsequently I decided on a major interface change that will
1052                result in several compatibility issues.
1053
1054                #split will stay the way it is.
1055
1056                #showme {text} will stay the same
1057                #showme {text} {0} will become invalid.
1058                #showme {text} {1} will print on the top line.
1059                #showme {text} {-1} will print on the bottom line / input
1060                   line.
1061                #showme {text} {-2} will print on the default split line.
1062
1063                #prompt {text} {substitution} will stay the same and print
1064                   on the default split line.
1065                #prompt {text} {substitution} {0} will become invalid.
1066                #prompt {test] {substitution} {1} will write to the top line.
1067                #prompt {text} {substitution} {-1} will write to the bottom
1068                   line / input line.
1069                #prompt {text} {substitution} {-2} will write to the 2nd line
1070                   from the bottom, which is the default split line.
1071
1072                All code that takes {col} {row} as an argument will be changed
1073                to {row} {col}. The main reason for this change is consistency,
1074                and because I've repeatedly swapped row and col in VT100 which
1075                can be a tricky bug to track down.
1076
1077session.c       Added the 'ats' keyword to the session find routine to return
1078                the active tintin session.
1079
1080mapper.c        Fixed the #map map {<width> x <height>} calculations.
1081
1082buffer.c        When using #snoop on a session #showme and a few other things
1083                were not displayed. This should be fixed now.
1084
1085nest.c          Added basic syntax highlighting for variables, only works
1086                when using #var {variable>
1087
1088tokenize.c      Added basic syntax highlight for lists, only works when
1089                using #<list> {list}
1090
1091help.c          Added TIME help file.
1092
1093tokenize.c      Fixed a bug with nested #while commands.
1094
1095port.c          Changed #event {PORT MESSAGE} to {PORT RECEIVED MESSAGE}
1096                which triggers when a message is received from a connection.
1097
1098                Added #event {PORT MESSAGE} and {PORT LOG MESSAGE} which
1099                trigger on internal messages.
1100
1101                All these can be prefixed with CATCH.
1102
1103variable.c      Fixed two crash bugs in #format, it remains a somewhat
1104                vulnerable command, so you should never allow a 3rd party
1105                argument to set the format string of #format or #echo, though
1106                parsing 3rd party arguments as a #format/echo argument is safe.
1107
1108                Safest is to use #line ignore #showme {text} if you want to
1109                print text that is ignored by triggers.
1110
1111telopt_server.c Added a TELNET server for #port, it's not hooked up yet,
1112                but the code merge may have caused some telnet bugs. Please
1113                report any unusual telnet behavior.
1114
1115mapper.c        Fixed some issues with #map legend, should be able to use it
1116                to change the legend now.
1117
1118buffer.c        Fixed some more scrolling issues.
1119
1120README          Updated the README file and added the NEWS and docs/syntax.txt
1121                files. The NEWS file primarily contains a list of changes that
1122                impact compatibility between versions.
1123
1124tel_client.c    Fixed CHARSET REQUEST handling.
1125
1126buffer.c        Fixed longstanding issue with the handling of long lines.
1127
1128
1129
1130
1131Mar 2019        2.01.8
1132------------------------------------------------------------------------------
1133
1134update.c        Added MAP UPDATED VTMAP event, triggers right after each
1135                vtmap redraw.
1136
1137config.c        Added CHILD LOCK config option to disable tintin command
1138                input. This is useful for people who want to give third
1139                parties remote access to a tintin++ session.
1140
1141line.c          Enabled the #line substitute arguments option which has a few
1142                limited usecases.
1143
1144main.c          Added better #! hashbang support, with %0 in the PROGRAM START
1145                event holding all unrecognized launch arguments. %1 holds the
1146                1st argument (program name), %2 the 2nd argument, etc.
1147
1148data.c          Added #INFO SYSTEM option, with #INFO SYSTEM SAVE saving the
1149                data to the info[SYSTEM] variable. Current variables
1150                supported are CLIENT_NAME and CLIENT_VERSION.
1151
1152event.c         Added %4 and %5 arguments to mouse click events which hold the
1153                word and line that was clicked. Under construction.
1154
1155net.c           Slightly improved traditional prompt handling, but the code
1156                will need a proper update to work properly.
1157
1158parse.c         Added UNKNOWN COMMAND event, triggers on #jklfdjl and other
1159                non-existent commands.
1160
1161screen.c        Added the #screen command, still under development.
1162
1163telopt.c        Added VT100 OSC en CATCH VT100 OSC events.
1164
1165port.c          Fixed an issue with #port and #chat on Mac OS X.
1166
1167mapper.c        Added #map global which allow setting the vnum of a room that
1168                contains exits for global transportation commands, like for
1169                example the recall location.
1170
1171mapper.c        #added #map roomflag noglobal to indicate rooms that block
1172                global transportation commands, like norecall rooms.
1173
1174input.c         Added CATCH RECEIVED INPUT event.
1175                Added RECEIVED KEYPRESS event.
1176                Added CATCH RECEIVED KEYPRESS event.
1177
1178mapper.c        Added support for up/down displaying in blockgraphics mode.
1179
1180mapper.c        Added #map flag direction to enable/disable the showing of the
1181                direction arrow in the mapper. Also includes a minor
1182                modification in the legend.
1183
1184utf8.c          Added KOI-8 to UTF-8 conversion support, which is enabled with
1185                #config charset koi2utf
1186
1187mapper.c        Added #map flag blockgraphics mode, still needs some more
1188                work.
1189
1190variable.c      Updated %a to take a UTF-8 sequence and print the
1191                corresponding 21 bit decimal unicode value. This requires for
1192                #config CHARSET to be set to an UTF-8 mode to work.
1193
1194                Updated %A to take a 32 bit decimal value and print the
1195                corresponding unicode UTF-8 sequence. This requires for
1196                #config CHARSET to be set to an UTF-8 mode to work.
1197
1198                Added %x which takes a hexadecimal value and prints the
1199                corresponding unicode UTF-8 sequence.
1200
1201                Added %X which convers a 64 bit unsigned decimal value to
1202                a 64 bit hexadecimal value.
1203
1204                Added %D which converts a 64 bit hexadecimal value to
1205                a 64 bit unsigned decimal value.
1206
1207math.c          Fixed an issue with 63-64 bit math.
1208
1209mapper.c        Added #map flag unicodegraphics mode.
1210
1211utf8.c          Added #config charset FANSI option that maps code page 437 to
1212                UTF-8. Requires an UTF-8 terminal to work and you can try out
1213                fansi art at 8bit.fansi.org 4201.
1214
1215main.c          The -s startup option will start tt++ in screen reader mode.
1216
1217mapper.c        Added support for direction displaying in mudfont mode.
1218
1219utf8.c          UTF-8 character detection should be synched with xterm.
1220
1221mapper.c        #map legend is now completely different and supports various
1222                default legends to choose from, namely:
1223
1224                [ASCII NESW          ]     [  1]  [ 32]
1225                [UNICODE NESW        ]     [  1]  [ 32]
1226                [UNICODE NESW LINE   ]     [  1]  [ 16]
1227                [UNICODE NESW MISC   ]     [ 17]  [ 24]
1228                [UNICODE NESW DIRS   ]     [ 25]  [ 32]
1229                [UNICODE NESW TUBE   ]     [  1]  [ 32]
1230                [MUDFONT BRAILLE TUBE]     [ 33]  [164]
1231                [MUDFONT BRAILLE LINE]     [ 33]  [164]
1232                [MUDFONT PRIVATE     ]     [ 33]  [164]
1233                [MUDFONT CURVED      ]     [161]  [164]
1234                [RESET               ]     [  1]  [164]
1235
1236                The legend exits of 164 characters and when setting for
1237                example UNICODE NESW DIRS you're only redefining 8 characters
1238                from position 17 to position 24.
1239
1240prompt.c        #prompt and #showme now take a 3rd argument that sets the
1241                column number at which the text is printed. The column number
1242                must be between 1 and the maximum width of the screen. If a
1243                negative number is provided the distance is measured from the
1244                right. The line isn't automatically cleared when using
1245                #showme with a column argument.
1246
1247input.c         Added support for fullwidth UTF-8 characters. This won't be
1248                working perfectly until unicode is better standardized.
1249
1250config.c        Added #config CHARSET BIG2UTF. When enabled text you receive
1251                will be translated from BIG-5 to UTF-8, and data you send will
1252                be translated from UTF-8 to BIG-5. This should allow someone
1253                to play a BIG-5 mud using an UTF-8 capable terminal.
1254
1255path.c          Added #path describe to give a basic description of the
1256                mapped path. Might be of interesting for anyone using a
1257                screen reader.
1258
1259utf8.c          Added UTF-8 character width detection.
1260
1261mapper.c        When #map list is used with a variable the variable is now
1262                properly cleared. In addition #map list will report the
1263                relative x y and z coordinates of the found rooms which can
1264                be used with #map jump. This update changes the table
1265                structure of the variable returned by #map list.
1266
1267mapper.c        Added #map legend reset option and fixed legend saving.
1268
1269mapper.c        Added new mudfont mode based on the braille unicode block.
1270
1271mapper.c        Changed the RIVER map room flag to CURVED and added support
1272                for it in simple and mudfont mode.
1273
1274mapper.c        Added click events that trigger when clicking a room on the
1275                vt map reporting the room vnum.
1276
1277session.c       More properly terminating zombie processes after using #run.
1278
1279telopt.c        Added support for the CHARSET telnet option. Currently
1280                supporting UTF-8, BIG-5, and FANSI.
1281
1282path.c          Added #path save <length|position> <variable> options.
1283
1284
1285Feb 2019
1286------------------------------------------------------------------------------
1287                There was a question regarding copyright and licensing
1288                recently so I made some changes and I'm writing this entry to
1289                clarify a few things.
1290
1291           1992 Peter Joachim Unold released TINTIN III with the implicit
1292                right to create derived works and the request for derived
1293                work to rename the client and clearly state the author. On
1294                usenet Peter Unold later confirmed that he considered his
1295                source code release to be public domain.
1296
1297           1995 Bill Reiss released TinTin++ 1.5 without a copyright notice,
1298                two mentions of authorship, and the implicit understanding
1299                that the work is considered public domain with the exception
1300                of the tintin15.txt manual which is explicitly copyrighted to
1301                Joann Ellsworth. It is also made clear that derived works
1302                should not use the name TinTin++.
1303
1304           2001 David Chan released TinTin++ 1.85 without a copyright notice
1305                just like all previous TinTin++ releases and 4 mentions of
1306                having made changes in the source code.
1307
1308           2001 David Chan and Robert Ellsworth released TinTin++ 1.86 under
1309                the GPL 2 or later with the 2002 copyright assigned to David
1310                Chan, Robert Ellsworth, and a reference to the CREDITS file
1311                on July 12th, 2001.
1312
1313                David Chan would have been unable to do so legally without the
1314                explicit permission of Bill Reiss and several other notable
1315                contributors unless TinTin++ 1.85 which was released without
1316                a copyright notice or license was considered by all parties to
1317                be public domain software.
1318
1319                Subsequently David Chan nor Robert Ellsworth could
1320                retroactively return copyright to previous authors. However,
1321                David Chan and Robert Ellsworth could consider themselves,
1322                and they in fact did, the copyright holders of the public
1323                domain TinTin++ 1.85 derived GPL 2 licensed software they
1324                titled TinTin++ 1.86.
1325
1326                The reason they did this can only be guessed at, but I assume
1327                they were tired of hosting, developing, and answering
1328                questions about TinTin++. The easiest way to get the source
1329                code permanently hosted was by debianizing it, which required
1330                licensing the code under GPL 2, which could only be done by the
1331                copyright holder.
1332
1333           2001 The TinTin++ 1.86 package was debianized by Jordi Mallach
1334                <jordi@debian.org> on 22 Aug 2001.
1335
1336           2001 Robert Ellsworth, aka Joann Ellsworth, as the copyright holder
1337                licensed the tintin15.txt manual under the GPL on 28 Aug 2001.
1338
1339           2004 Igor van den Hoven received permission from Bill Reiss to
1340                release TinTin++ derived code under the name TinTin++.
1341
1342           2004 Igor van den Hoven released TinTin++ 1.90 on March 13 under
1343                the GPL 2 or later with the 2004 copyright notice referring
1344                to the CREDITS file. Due to the inclusion of the tintin15.txt
1345                file the code could only be legally released under the GPL
1346                2 or later.
1347
1348                Version 1.90 featured a new mathematics engine and regular
1349                expression interpreter, telnet negotations, a scroll back
1350                buffer, enhanced VT102 interpretation, a more standardized
1351                TINTIN scripting language, a nifty string formatter, internal
1352                color manipulation, and a back to basics command structure.
1353
1354                TinTin++ 1.90 contained no source code from TinTin++ 1.86 and
1355                over 50% of the 1.85 code had been deleted or rewritten.
1356
1357           2008 Igor van den Hoven released TinTin++ 1.98.3 under the GPL 2
1358                or later with the copyrighted tintin15.txt manual removed.
1359
1360                At this point 90% of the code was rewritten and what remained
1361                was primarily heavily modified code originally written by
1362                Peter Unold and Bill Reiss.
1363
1364           2019 Igor van den Hoven released TinTin++ 2.01.8 under the GPL 3
1365                or later. The copyright of over 99% of the source code is
1366                held by Igor van den Hoven with minimal contributions from
1367                others, making him the sole copyright holder.
1368
1369                TinTin++, as of version 2.01.8, may not be distributed under
1370                GPL 2, and can only be distributed under GPL 3 or later. The
1371                reason for this is the exploitation of a serious loophole in
1372                the GPL 2 license.
1373
1374                The TinTin++ software as of version 1.87 is NOT public domain,
1375                as the GPL 2 & 3 licenses explicitly require a legal copyright
1376                holder in order to legally enforce the license. Nor do I
1377                desire to relinquish my rights to do as I please with software
1378                that I've worked on for close to 20 years.
1379
1380                If anything is unclear feel free to contact me.
1381
1382Feb 2019       2.01.7
1383------------------------------------------------------------------------------
1384
1385class.c        Added proper class nesting. When closing the active class,
1386               the last active class is activated. This change will cause
1387               trouble for scripts that don't properly close classes.
1388
1389class.c        Added #class {class} SIZE {variable} option to store the size
1390               of a class in a given variable.
1391
1392event.c        Added the SHORT-CLICKED mouse events. It triggers when the
1393               time between pressing and releasing the mouse button is
1394               less than 0.5 seconds. The event is not triggered when
1395               double or triple clicks occure, but will trigger on the
1396               first click of a double click, just like a triple click
1397               event will be preceded by a double click event.
1398
1399event.c        All mouse events now report the inverse x and y position
1400               using the %2 and %3 arguments.
1401
1402event.c        Added the LONG-CLICKED mouse event. It triggers when the time
1403               between pressing and releasing the mouse button is greater
1404               than 0.5 seconds.
1405
1406variable.c     Added better support for wrapping escaped characters with
1407               #format %w.
1408
1409path.c         Added #path create, destroy, goto, move start, stop, swap, undo
1410               which are somewhat document in #help path.
1411
1412               You can now have a position on a path, which is displayed
1413               with #path map. This allows using #path move backward when a
1414               #path walk forward is interrupted.
1415
1416
1417Jan 2019       2.01.6
1418------------------------------------------------------------------------------
1419
1420tinexp.c       Using $$variable in #action triggers is no longer valid. Use
1421               $variable instead. If the variable needs to be substituted
1422               right away use:
1423
1424               #line sub var {#action {$var} {#loop 1 3 cnt #showme $$cnt}}
1425
1426event.c        Added {DOUBLE-CLICKED} and {TRIPLE-CLICKED} mouse events
1427               these events trigger on 2 and 3 clicks within 0.5 seconds.
1428               A triple click will reset the mouse state.
1429
1430event.c        Added {MOVED }, {PRESSED }, {RELEASED } and {SCROLLED } mouse
1431               events. Use #INFO EVENT ON to see the full events. The row
1432               position is reported using the same method as with #prompt.
1433
1434               For each click three events are generated, one generic one,
1435               one with the row position as measured from the top, and one
1436               with the row position as measured from the bottom.
1437
1438               The MOVED event only triggers when the mouse is moved while a
1439               button is pressed.
1440
1441               %0 contains the column and %1 the row.
1442
1443config.c       Added MOUSE TRACKING config option which enables mouse
1444               tracking events. While mouse tracking is
1445               enabled shift needs to be hold in order to select text with
1446               the mouse if you want to copy and paste text.
1447
1448cursor.c       Added WINDOW FOCUS IN and WINDOW FOCUS OUT events.
1449
1450tick.c         Fixed micro delays not getting properly sorted.
1451
1452event.c        Added #info {events} {on} option to display messages when
1453               events are thrown. As this can get quite spammy these
1454               messages can be gagged as well.
1455
1456gag.c          Added #debug and #info messages for gags.
1457
1458telopt.c       Renamed all telnet events that prevent the execution of the
1459               default telnet handling code to CATCH IAC <TELNET CODE> adding
1460               several events that did not yet exist.
1461
1462               Telnet events without default handling code like MSDP and GMCP
1463               were not renamed.
1464
1465telopt.c       Added better telnet loop protection for echo negotiations.
1466
1467scan.c         Changed #scan syntax to #scan {ABORT|CSV|TSV|TXT} {filename}
1468
1469               CSV reads a comma separated file which triggers the
1470               SCAN CSV HEADER (first line) and SCAN CSV LINE (subsequent
1471               lines) events. Values containing spaces require quotes, and
1472               two quotes "" are required to escape a quote.
1473
1474               TSV reads a tab separated file which triggers the
1475               SCAN TSV HEADER and SCAN TSV LINE events.
1476
1477               TXT is an updated and faster version of the old #scan.
1478
1479               The old #scan syntax is no longer supported.
1480
1481config.c       Changed the random number generator to 64 bit with each
1482               session having its own unique seed that can be set with
1483               #config {random seed}.
1484
1485
1486Jan 2018       2.01.5
1487------------------------------------------------------------------------------
1488
1489math.c         Fixed bug with floating point math.
1490
1491line.c         Added #line verbatim option.
1492
1493cursor.c       Added the #cursor brace open, and #cursor brace close
1494               commands. This to easily insert the { and } characters from
1495               within a macro, which currently is rather complicated.
1496
1497tinexp.c       Added support for <Fxxxxxx> and <Bxxxxxx> 24 bit color codes.
1498               F stands for foreground, B for background, xxxxxx is a
1499               hexadecimal RGB value. The terminal must support truecolor
1500               for these to work.
1501
1502session.c      Added on|off option to #snoop.
1503
1504data.c         Added #info {list} {LIST|SAVE} option to list the content of a
1505               list or save it to a variable.
1506
1507tokenize.c     Improved trailing space parsing.
1508
1509mapper.c       Added exit weights.
1510
1511mapper.c       Added #map get all <var> option.
1512
1513main.c         Added the -a <argument> startup option, which is passed to the
1514               %2 variable of the PROGRAM start event.
1515
1516buffer.c       Added #buffer lock {on|off} option.
1517
1518session.c      Fixed #port session close being shown as a time out.
1519
1520tinexp.c       Added \UXXXXXX escape code which takes 6 hexedecimal digits.
1521
1522tinexp.c       Added \uXXXX escape code, XXXX must be a 4 digit hexadecimal
1523               unicode index, which is translated to a UTF-8 sequence.
1524
1525tinexp.c       @ $ * and & characters send from the server are only escaped if
1526               the key matches an existing variable. Keep in mind that ${ *{
1527               and &{ are always escaped.
1528
1529
1530tinexp.c       Added support for <Fxxx> and <Bxxx> 12 bit color codes. F
1531               stands for foreground, B for background, xxx is hexadecimal RGB
1532               value. For example <F0F0> will print in bright green. The
1533               terminal must support truecolor for these to work.
1534
1535               To use 24 bit truecolor codes use \e[38;2;R;G;Bm where R G B
1536               are decimal values between 0 and 255. \e[48;2;R;G;Bm will print
1537               background colors.
1538
1539path.c         Added support for multiple arguments to #unpathdir.
1540
1541line.c         #line log {filename} {text} was extremely slow, at least on
1542               cygwin, because it was opening and closing a file descriptor
1543               for each log call. Multiple logs to the same file are much
1544               faster now, with each session having its own dedicated file
1545               descriptor to speed up consecutive writes to the same log
1546               file.
1547
1548config.c       Added config RANDOM SEED option to set a custom seed for the
1549               random number generator. Useful for machine learning scripts
1550               and some other obscure stuff.
1551
1552system.c       Added popen failure check for #script.
1553
1554mapper.c       Fixed issue with #map undo not properly handling void rooms.
1555
1556nest.c         Fixed memory issue causing a crash on very large variables.
1557
1558config.c       Added #config INHERITANCE option. Default is on, set to off
1559               to prevent triggers from getting inherited. Configurations
1560               are still inherited from the startup session.
1561
1562config.c       Added #config CHARSET AUTO option. TinTin++ will try to
1563               automatically detect UTF-8 and BIG5 encoding.
1564
1565session.c      SESSION CREATED now triggers after the filename provided with
1566               #session, #ssl, #run, or #port has been read.
1567
1568parse.c        Removed dot notation support for variables. #var bla.bli blo
1569               is no longer valid, nor is $bla.bli. The code didn't add any
1570               functionality while it was causing all kinds of issues. Sorry
1571               for the inconvenience, not one of my brightest ideas.
1572
1573
1574telopt.c       Updated MTTS to report SCREEN READER setting.
1575
1576config.c       Added SCREEN READER config option.
1577
1578telopt.c       Updated MTTS to report the ANSI, 256, and TRUE color setting.
1579
1580config.c       Replaced 256 COLOR config with COLOR MODE config option,
1581               options are AUTO, NONE, ANSI, 256, or TRUE.
1582
1583vt102.c        Added truecolor COLOR PATCH support. Not well tested so far.
1584
1585log.c          Added truecolor html logging.
1586
1587input.c        No longer spawning blank lines with #config {command echo}
1588               off, if you want the old behavior you can set your command
1589               color to <008> or <aaa>.
1590
1591tinexp.c       Added %! as a regular expression option to prevent the auto
1592               capturing of a match. For example %!*, %!w, %!d etc.
1593
1594               %!{ } can be used to the same effect to embed a regular
1595               expression without automatically adding paranthesis.
1596
1597tinexp.c       Added an exception so %*{text} is treated as a regular
1598               expression instead of a variable. As of the last version
1599               *{text} is a valid variable.
1600
1601variable.c     Added the %H #format option to generate a 32 bit hash for the
1602               given string.
1603
1604substitute.c   Fixed argument substitution problem.
1605
1606main.c         Can use #end {\} to terminate tintin silently.
1607
1608system.c       Added #scan abort option
1609
1610
1611Oct 2017       2.01.4
1612--------------------------------------------------------------------------------
1613
1614main.c         Added proper greeting handling for narrow terminals, mainly for
1615               people using tt++ on an android phone.
1616
1617variable.c     Added proper \ handling in string length calculations.
1618
1619variable.c     #unvariable takes additional arguments to unvar several
1620               variables at once.
1621
1622tinexp.c       Added support for *{variable} to show variable/table keys. This
1623               is useful when low level data processing is needed.
1624
1625               For example, *{+1} shows the key of the first variable.
1626
1627list.c         Added #list {var} simplify {variable} option which saves a
1628               list (which internally is a table) as a semi-colon separated
1629               list to the provided destination variable.
1630               {{1}{bli}{2}{bla}{3}{blo}} becomes {bli;bla;blo}
1631
1632
1633May 2017       2.01.3
1634--------------------------------------------------------------------------------
1635
1636mapper.c       Added #map legend support to assign custom characters for
1637               the #map flag MUD FONT display mode. By default they're set
1638               to map to the unicode private use area.
1639
1640mapper.c       By default an UTF-8 #map legend is created for those who do
1641               not use ASCII graphics. The ANSI legend was pretty much
1642               unusable and most terminals are supporting UTF-8 now. Windows
1643               does not support all box drawing characters, hopefully this
1644               will be fixed in the future.
1645
1646mapper.c       Removed support for the vtgraphics drawing mode which worked
1647               on very few terminals.
1648
1649utils.c        Verbosity is automatically enabled for debug mode to avoid
1650               logging inconsistencies.
1651
1652port.c         Added #port command, similar to netcat.
1653
1654chat.c         #chat prefix works now
1655
1656math.c         Better #math debug through #debug VARIABLE on
1657
1658mapper.c       Added map exit <dir> dir <number> option.
1659
1660action.c       Fixed action crash bug that slipped in
1661
1662telopt.c       Added telnet events for IAC GA and IAC EOR
1663
1664
1665Jun 2015       2.01.2
1666--------------------------------------------------------------------------------
1667
1668mapper.c       Added map <radius> <variable name> {v} option to save the map
1669               output to a variable.
1670
1671log.c          html log files now correctly set the charset to UTF-8 or big5
1672               if applicable.
1673
1674tokenize.c     Added support for local variables with the #LOCAL command. Most
1675               commands that manipulate variables will use a local variable
1676               if it has been declared.
1677
1678utils.c        Fixed crash bug on substitutions on system messages.
1679
1680session.c      Showing all connect retry attempts and seconds left.
1681
1682session.c      Any manual input while connecting will cancel connect retry.
1683
1684main.c         Can create macros for ctrl-d and ctrl-z again.
1685
1686mapper.c       Added #map color background option to set a background color
1687               for the map display.
1688
1689variable.c     Added optional width argument to #format %w. Also added UTF-8
1690               support to %w.
1691
1692variable.c     Attempt to fix %p crash bug on OS X.
1693
1694               Fixed compilation issue for OS X.
1695
1696
1697Jan 2014       2.01.1
1698--------------------------------------------------------------------------------
1699
1700chat.c         Added CHAT MESSAGE event, %0 contains the chat color and prefix,
1701               %1 omits chat color and prefix.
1702
1703chat.c         Added #chat prefix option.
1704
1705mapper.c       Can now provide multiple flags at once when using
1706               #map roomflag and #map insert.
1707
1708line.c         Added #line quiet option.
1709
1710cursor.c       Fixed tab bug with multi-word tabs.
1711
1712event.c        Fixed bug with events defined in multiple sessions.
1713
1714tinexp.c       Added @<session name>{<substitution>} option to perform a
1715               function-like substitution in another session and retreive
1716               the result. Primarily useful for getting variables.
1717
1718highlight.c    Added no-blink no-underscore and no-reverse #highlight options.
1719
1720highlight.c    Added option to use escape codes in the #highlight color field.
1721
1722class.c        Added #class {<class>} list {<list>} option.
1723
1724map.c          Added #map list {roomflag} option.
1725
1726list.c         Fixed bug with using #list clear on a nested variable.
1727
1728substitute.c   Added patch by Nya to properly handle colored substitutions.
1729
1730math.c         Added // operator to calculate sqrt // 2 or cbrt // 3
1731
1732math.c         Added ** operator to calculate power
1733
1734tinexp.c       Added IGNORE options to variables and functions.
1735
1736main.c         The command history is automatically saved again.
1737
1738ssl.c          Added SSL support based on KBTin code by Adam Borowski.
1739
1740tinex.c        $ @ and & are now escaped when received as part of an action for
1741               added security.
1742
1743session.c      Added SESSION CREATED event.
1744
1745parse.c        Fixed command echoing when executing commands in another session.
1746
1747Mar 2013       2.01.0
1748--------------------------------------------------------------------------------
1749
1750session.c      #session takes a filename as an additional argument, if the
1751               session succesfully connects the file will be read.
1752
1753variable.c     Fixed #echo {%f} {5 / 3} handling.
1754
1755cursor.c       Added #cursor get and #cursor set options.
1756
1757parse.c        Added support for nesting using the . argument.
1758
1759mapper.c       Added map_search_compile option, increasing search speed.
1760
1761list.c         Added #list TOKENIZE option.
1762
1763cursor.c       Fixed the cursor PASTE BUFFER option.
1764
1765event.c        Added the VARIABLE UPDATE <VAR> event.
1766
1767cursor.c       Added stripping of semi-colons when auto tabbing.
1768
1769configure.in   Better error handling by Slysven.
1770
1771Mar 2012       2.00.9
1772--------------------------------------------------------------------------------
1773
1774line.c         Added a #line strip option to strip color and escape codes.
1775
1776mapper.c       Fixed the handling of colored symbols in the ascii map.
1777
1778input.c        RECEIVED INPUT now triggers before input is parsed.
1779
1780mapper.c       Fixed #map undo handling for #map insert.
1781
1782nest.c         Fixed crash when using #var a[b]c x
1783
1784tokenize.c     Fixed crash when using #case outside a #switch.
1785
1786cursor.c       Added stripping of tailing dots and commas when auto tabbing.
1787
1788variables.c    #format %A now properly handles BIG5 and UTF-8.
1789
1790session.c      Added SESSION TIMED OUT event.
1791
1792variable.c     Fixed substitution problem with #unvariable.
1793
1794mapper.c       Added support for a {variable} argument to #map list to store
1795               the returned data into a variable. Using {roomname} and
1796               other keywords from #map set will work as well.
1797
1798mapper.c       Added #map exit <dir> save to store exit data in a variable.
1799
1800mapper.c       Added basic color compression support.
1801
1802mapper.c       Fixed the #map legend display in vtgraphics mode.
1803
1804mapper.c       Added automatic initialization of a UTF-8 based legend when
1805               creating a map with #config CHARSET set to UTF-8.
1806
1807mapper.c       Fixed unnecessary redrawing of the VT map.
1808
1809list.c         Now properly handles nested arguments.
1810
1811telopt.c       Disabled telnet handling when using #run.
1812
1813mapper.c       Added better UTF-8 handling for room symbols.
1814
1815net.c          Added the RECEIVED PROMPT event.
1816
1817variable.c     Fixed a bug in #format with left aligning meta text.
1818
1819mapper.c       Fixed a bug with path finding related to weighted rooms.
1820
1821mapper.c       Added #map flag symbolgraphics option to display the room symbol
1822               instead of a drawing symbol when in non asciigrahpics mode.
1823
1824mapper.c       Added #map color here option to set the color of the current
1825               location.
1826
1827mapper.c       Fixed a path finding issue related to the avoid flag.
1828
1829
1830Sep 2011       2.00.8
1831--------------------------------------------------------------------------------
1832
1833main.c         No more advertisements.
1834
1835mapper.c       Back to void rooms only being allowed two exits, as handling
1836               multi-exit void rooms adds too much complexity.
1837
1838mapper.c       Updated the fill_map routine to use breadth-first initialization
1839               which should significantly improve execution times.
1840
1841prompt.c       Added proper UTF-8 string length checking for prompt drawing.
1842
1843mapper.c       Room names are no longer automatically set on creation.
1844
1845mapper.c       Added the #map vnum command to change the current vnum.
1846
1847mapper.c       #map link now requires the 'both' argument for a two-way exit
1848               to be created.
1849
1850variable.c     Added support to #format for %f to print floating point numbers.
1851
1852variable.c     Fixed color spacing bug in #format's %s handling.
1853
1854mapper.c       Added terrain as a searchable option to #map list, goto, find,
1855               and run.
1856
1857mapper.c       Added roomweight to the #map get and #map set options. By
1858               default the weight of a room is set to 1.0 and can be anywhere
1859               from 0.001 to 1000. The path finder will favor rooms with a low
1860               weight.
1861
1862mapper.c       Made the layout of #map info more aesthetically pleasing and
1863               added the listing of entrances.
1864
1865substitute.c   Fixed bug where functions could overwrite the original
1866               substitution's arguments.
1867
1868highlight.c    Added support for xterm 256 color names, dark azure, dark ebony,
1869               dark jade, dark lime, dark orange, dark tan, dark silver, dark
1870               violet, light azure, light ebony, light jade, light lime, light
1871               orange, light tan, light silver, light violet.
1872
1873variables.c    Added the %A #format option which prints the corresponding ASCII
1874               value of the given character. Useful for low level string
1875               handling.
1876
1877
1878Apr 2011       2.00.7
1879--------------------------------------------------------------------------------
1880
1881main.c         Added -s option to launch tt++ with a custom seed, undocumented
1882               till I get to think it over.
1883
1884math.c         Improvements to #switch.
1885
1886telopt.c       Added basic low level VT100 stripping for answer back codes.
1887
1888telopt.c       Added MSDP array support.
1889
1890mapper.c       Added a set and get option to #map exit that stores and
1891               retrieves from a data field.
1892
1893mapper.c       Added the terrain and data fields to #map set and #map get. The
1894               data field is intended to contain a table, eliminating the need
1895               for future extensions.
1896
1897system.c       When using #run followed by #zap the created child process will
1898               be properly killed instead of left to hang as a zombie process.
1899
1900tick.c         When setting a delay the final delay time is echoed.
1901
1902event.c        Added some extra security to event triggers.
1903
1904telopt.c       Added MTTS support. On a third TTYPE request MTTS will be
1905               reported followed by a bitvector that indicates whether ANSI,
1906               VT100, UTF-8, and 256 colors are enabled. The UTF-8 and 256
1907               color settings can be configured by the user. VT100 is reported
1908               as disabled if #split mode is enabled - this because the split
1909               screen mode needs to be disabled for server side VT100
1910               interfaces to work.
1911
1912system.c       Added some extra security to the #script command.
1913
1914system.c       Changed the #script command to behave like a two argument
1915               command in preperation of removing the rather awkward
1916               single argument support.
1917
1918line.c         Added #line ignore option to execute a command without
1919               checking any triggers.
1920
1921config.c       Added a 256 COLOR option. When called with auto it'll guess at
1922               the terminal's 256 color capabilities.
1923
1924variable.c     When setting a variable the final variable definition is echoed.
1925
1926variable.c     Added support for BIG5 and UTF8 string formatting.
1927
1928cursor.c       Added support for BIG5 and UTF8 input handling.
1929
1930config.c       Added session based BIG5 and UTF8 #config CHARSET option.
1931
1932substitute.c   Fixed word boundary matching for substitutions.
1933
1934highlight.c    Fixed word boundary matching for highlights.
1935
1936nest.c         Math is no longer performed on table keys, mainly to reduce
1937               annoying false positives, and because the behavior can be
1938               scripted with math functions. Math is still performed when
1939               looking up an index.
1940
1941path.c         Renamed #path map to #path show, #path map still works, but it
1942               doesn't properly describe what the command does.
1943
1944path.c         Added #path unzip option that'll load a speedwalk.
1945
1946line.c         #line logverbatim is now fully verbatim.
1947
1948log.c          Added a #log off option. #log append and overwrite can now be
1949               called while logging is already enabled.
1950
1951
1952Jan 2011       2.00.6
1953--------------------------------------------------------------------------------
1954
1955buffer.c       Added better multi-line scroll back handling when word wrap is
1956               disabled.
1957
1958telopt.c       Braces are now properly converted in raw gmcp data.
1959
1960highlight.c    Fixed a bug causing only the first highlight on a line to
1961               trigger.
1962
1963line.c         Added a #line {verbose} {<commands>} option which forces
1964               verbosity on the given commands.
1965
1966buffer.c       The first match for #buffer find is now 1 instead of 0.
1967
1968buffer.c       Added support for negative page numbers, causing #grep to search
1969               from the beginning to the end of the scroll back buffer. The
1970               first page is now page 1 instead of page 0.
1971
1972buffer.c       Added a NULL check to prevent possible crashes, not ideal as it
1973               hides an underlying bug.
1974
1975net.c          Added the RECEIVED OUTPUT event with %0 containing the received
1976               output from the server. Can be used to create multi-line
1977               triggers, though it wouldn't be very efficient.
1978
1979main.c         No longer enabling DECCKM on startup so keypad mode works
1980               correctly with MinTTY, it should also result in more reliable
1981               cross-terminal behavior. This might change the sequence of key
1982               presses on some systems, so remap macros that stop working.
1983
1984mapper.c       Added #map resize <size> option to increase the maximum number
1985               of rooms.
1986
1987mapper.c       Added #map get worldsize option.
1988
1989mapper.c       Added #map get worldflags option and fixed some displaying issues
1990               in the #map exit command.
1991
1992update.c       Added several time events, YEAR, MONTH, WEEK, DAY, HOUR, MINUTE,
1993               SECOND, DATE mm-dd, DATE mm-dd hh:mm, TIME hh:mm, TIME hh:mm:ss.
1994
1995               Events like YEAR 2012, MONTH 04, HOUR 13, are valid as well.
1996
1997               %0 to %6 hold year, month, week, day, hour, minute, and second
1998               for each event.
1999
2000math.c         Added support for automatic dd:hh:mm:ss time to second
2001               conversion. For example, #math test 1:12:32:17 would store
2002               131537 in test. #delay 10:00 #bell would ring the terminal bell
2003               after 10 minutes. This change will effect associative arrays
2004               consisting of numbers and colons.
2005
2006tinexp.c       Updated #replace to support regular expressions. Like with the
2007               #regex command the &1..&99 arguments can be used.
2008
2009
2010Oct 2010       2.00.5
2011--------------------------------------------------------------------------------
2012
2013session.c      Fixed split settings not getting properly inherited from the
2014               startup session.
2015
2016advertise.c    Updated with 2011 sponsors.
2017
2018system.c       do_script() and do_system() now call refresh_terminal(), this
2019               due to php calls messing up the terminal settings.
2020
2021terminal.c     Added the refresh_terminal() function which will reset the
2022               terminal settings to the tintin default.
2023
2024mapper.c       Fixed the MAP EXIT ROOM event, it was reporting the next room
2025               rather than the current room for %0. %1 now holds the new room,
2026               and MAP ENTER ROOM will hold the old room in %1.
2027
2028mapper.c       Added the option to make vnum specific events, like MAP EXIT ROOM
2029               42 or MAP ENTER ROOM 27.
2030
2031vt102.c        Fixed bug in the VT102 state handler.
2032
2033mapper.c       Added the option to provide a vnum for #map delete.
2034
2035tokenize.c     Fixed a bug with the verbose state being lost when starting a
2036               new session using an alias.
2037
2038tinexp.c       Fixed a bug with embedded variables not getting substituted when
2039               used in nested variables.
2040
2041
2042Aug 2010       2.00.4
2043--------------------------------------------------------------------------------
2044
2045tokenize.c     Added a better verbatim and verbosity handler to more
2046               generically deal with aliases and input triggered events.
2047
2048mapper.c       Several mapper messages are no longer displayed when used in
2049               scripts.
2050
2051vt102.c        Added proper \e[0;0r VT100 handling.
2052
2053telopt.c       Added IAC DONT TTYPE handling, allowing servers to reset the
2054               TTYPE negotiation state.
2055
2056telopt.c       Added support for cycling through terminal types. On the first
2057               TTYPE request TINTIN++ is reported, on the second request the
2058               TERM environment variable is reported.
2059
2060misc.c         #zap now takes an optional argument to zap a specific session.
2061
2062text.c         When UTF8 is defined in tintin.h UTF8 characters should get
2063               wordwrapped correctly.
2064
2065telopt.c       Added support for module like MSDP events.
2066
2067mapper.c       Added #map uninsert <direction> command which does the exact
2068               opposite of the insert command.
2069
2070mapper.c       Added #map at <location> <command> command which executes the
2071               given commands at the given location.
2072
2073variable.c     Allowing math in #format %t time seeds.
2074
2075path.c         Fixed #path zip command.
2076
2077prompt.c       Added better #prompt {line} {substitution} {0} support to print
2078               a mud prompt and pending input on the 0 line.
2079
2080mapper.c       Added #map map 80x20 <filename> {a} option to log in append
2081               mode, by default an overwrite is performed.
2082
2083path.c         Added the option to use #path load {n;e;s;w;u;d}
2084
2085path.c         When using #path run {delay} you can remove pending run commands
2086               (fairly) safely using: #undelay PATH %d
2087               This will also work for #map run {location} {delay}
2088
2089
2090Jul 2010       2.00.3
2091--------------------------------------------------------------------------------
2092
2093mapper.c       When path finding the path will be highlighted on the map.
2094
2095telopt.c       Added support for GMCP events and JSON to TINTIN conversion.
2096
2097mapper.c       Merged the #map exit and #map exitdir into the #map exit command,
2098               adding options for COMMAND, DIRECTION, FLAG, NAME, and VNUM.
2099
2100mapper.c       Added support for exit flags, no actual exit flags have been
2101               implemented yet.
2102
2103mapper.c       Added #map goto {vnum} {dig} option to have goto dig a room
2104               if the room does not exist.
2105
2106mapper.c       Added #map dig {dir} {<vnum>} option to dig an exit to the
2107               specified vnum.
2108
2109mapper.c       Added NOFOLLOW flag support to stop auto following of the
2110               mapper.
2111
2112nest.c         Fixed freeze bug caused by using a semi-colon between
2113               associative array elements.
2114
2115variables.c    Statements like %+10s now ignore colors.
2116
2117variable.c     Escapes are now handled correctly by %L in #format.
2118
2119input.c        Fixed an issue in echo_command causing broken packets to
2120               be echoed without triggering any actions or events.
2121
2122mapper.c       When setting an exit command it will work like an alias when
2123               in that room.
2124
2125list.c         #list {var} add now allows semi-colon separated arguments.
2126
2127list.c         #list {var} create now allows semi-colon separated arguments.
2128
2129variable.c     #variable allows additional arguments which can be used to
2130               merge nested variables.
2131
2132nest.c         Added add_nest_node function which is a copy of set_nest_node
2133               except that it doesn't clear the variable.
2134
2135telopt.c       Added MSDP_OPEN and MSDP_CLOSE support.
2136
2137telopt.c       MSDP arrays no longer generate an event for each item, instead
2138               a list is generated.
2139
2140tintin.h       Lowered BUFFER_SIZE to 20000 because of crash reports.
2141
2142files.c        #write now only saves triggers that do not belong to a class.
2143
2144mapper.c       Added MAP ENTER MAP and MAP EXIT MAP events.
2145
2146split.c        Redrawing the VTMAP whenever the split settings are reset,
2147               typically on session switch and screen resize.
2148
2149
2150Apr 2010       2.00.2
2151--------------------------------------------------------------------------------
2152
2153line.c         Added the #line substitute options which allows the
2154               substitution of variables, functions, colors, and
2155               escape codes in the given argument.
2156
2157config.c       Added a config option to enable BIG5 support.
2158
2159mapper.c       Added an optional vnum argument to #map get and #map set,
2160               calling #map get on an invalid vnum results in the variable
2161               being set to 0 while #map set calls on invalid vnums do
2162               nothing.
2163
2164terminal.c     Added SCREEN RESIZE event.
2165
2166session.c      Added SESSION ACTIVATED and SESSION DEACTIVATED events.
2167
2168nest.c         Nested variable calls to non existing nests now return
2169               "" rather than "0", this to allow $var[%*] calls to work
2170               correctly with empty variables. I originally added the "0"
2171               response for if checks, but this is obsolete with the
2172               much more reliable &variable[] call.
2173
2174buffer.c       Added a check to avoid a potential crash on displaying the
2175               scrollback buffer in show_buffer(), needs a better fix but I
2176               don't have the time and patience.
2177
2178tables.c       Removed #suspend command, #cursor suspend is available instead.
2179
2180tokenize.c     Added BIG5 handling for #parse
2181
2182tintin.h       Fixed an error in the SCROLL macro that determines whether
2183               something is printed inside or outside of the scrolling region.
2184
2185tinexp.c       Function arguments are no longer space but semicolon separated.
2186
2187mapper.c       Updated messages to be non triggerable and to only echo on manual
2188               input.
2189
2190
2191Feb 2010       2.00.1
2192--------------------------------------------------------------------------------
2193
2194help.c         Added documentation for #map exitdir
2195
2196net.c          Fixed a bug with color patch prepending the current line's color
2197               rather than the previous line's color.
2198
2199vt102.c        Improved 256 color patching handling.
2200
2201vt102.c        Added better \b handling, so muds using backspaces won't cause
2202               wrapping or scrollback issues.
2203
2204path.c         #path load and #path save now load and save to variables, rather
2205               than aliases.
2206
2207mapper.c       Added #map dig {<direction>} {new} option.
2208
2209mapper.c       Added support for loading map files edited in Windows.
2210
2211tinexp.c       Added support for separating function arguments using semicolons.
2212
2213buffer.c       Now only stores a buffer line as a simple variable if no upper
2214               bound argument is given. Added support for dealing with a
2215               lower upper bound to store the lines in reverse.
2216
2217math.c         Fixed floating point handling.
2218
2219data.c         Fixed floating point associative array handling.
2220
2221
2222Jan 2010       2.00.0
2223--------------------------------------------------------------------------------
2224
2225list.c         Changed substitution order for #list add to substitute before
2226               breaking up the arguments.
2227
2228tinexp.c       Added escaping of existing functions using @@
2229
2230tokenize.c     Added tokenization of #regex.
2231
2232data.c         A trigger's priority can now be a floating point numbers.
2233
2234tinexp.c       Fixed COMMAND_SEPARATOR related bug introduce in 1.99.9.
2235
2236misc.c         Added escape substitutions to vt row echo calls.
2237
2238buffer.c       Added #buffer get option.
2239
2240
2241Nov 2009       1.99.9
2242--------------------------------------------------------------------------------
2243update.c       Fixed crash bug with delays.
2244
2245math.c         Fixed issue with negative numbers.
2246
2247main.c         Fixed infinite reconnect trigger loop with #end.
2248
2249tintin.h       Can now alter the COMMAND_SEPARATOR definition in tintin.h to
2250               change the command separator character.
2251
2252buffer.c       Added #buffer clear option.
2253
2254math.c         Fixed bug with ~ handling.
2255
2256tick.c         Fixed a bug with delays not substituting variables right away.
2257
2258
2259Sep 2009       1.99.8
2260--------------------------------------------------------------------------------
2261math.c         Added check to bypass inf and nan in tintoi.
2262
2263update.c       Fixed a potential memory overflow in the input parser.
2264
2265misc.c         Fixed displaying bug with semi-colons in echos.
2266
2267nest.c         Added support for $variable[regex] to return lists. For
2268               example $variable[%*]
2269
2270tinexp.c       No longer required to escape literal ^ and $ signs.
2271               So #regex {A ^ B} {A ^ B} returns true now instead of false.
2272
2273net.c          Instead of exiting, tintin tries for 1 second to write data
2274               to a session before closing the session.
2275
2276tinexp.c       $$<string> only gets converted to $<string> if $<string> makes
2277               a valid variable. Same for &&<string>.
2278
2279tokenize.c     Added support for using ; in #foreach.
2280
2281misc.c         Added support for using ; in #forall.
2282
2283mapper.c       Updated the map grid to allocate memory for a future
2284               #map dump 99x99 <file> command.
2285
2286
2287Jul 2009       1.99.7
2288--------------------------------------------------------------------------------
2289mapper.c       Added #map color <rooms|exits> <color> option.
2290
2291mapper.c       #map list uses all location fields now, displays distance, and
2292               no longer displays exits.
2293
2294mapper.c       Added desc, area, and note field to rooms.
2295
2296mapper.c       Added checking for exits as well as desc, area, and note for
2297               the map goto and map find commands.
2298
2299tokenize.c     Substituting the arguments of #return.
2300
2301nest.c         $variable[] returns "" if the variable exists but has no nests
2302
2303*.c            Updated triggers to substitute variables.
2304
2305tinexp.c       Added %i and %I to toggle case in-sensitive matching.
2306
2307misc.c         Added #echo {{spam}{row}} support.
2308
2309parse.c        Yet another attempt to get verbatim mode working properly.
2310
2311variable.c     Renamed #replacestring to #replace
2312
2313tinexp.c       All commands now use tintin regular expressions. Instead of
2314               * and ? use %* and %? - for perfect matches uses ^string$.
2315
2316               This change affects the #regexp and #if commands.
2317
2318tokenize.c     Added #write support for #loop and #foreach.
2319
2320tokenize.c     Added #foreach {list} {variable} {commands}
2321
2322tokenize.c     #loop syntax is now: #loop {min} {max} {variable} {commands}
2323
2324variables.c    The argument list of #format and #echo are no longer nested,
2325               this probably requires many scripts to be updated.
2326
2327nest.c         Now only showing non existing nested variables as 0, unnested
2328               variables will be shown as $variable if they do not exist.
2329
2330files.c        Added support for saving nested variables.
2331
2332list.c         Updated list support for nested variables.
2333
2334data.c         The kill command now takes a 2nd argument allowing to kill
2335               specific items in the chosen list.
2336
2337nest.c         Added support for math within brackets.
2338
2339math.c         Added get_alnum routine.
2340
2341nest.c         Added support for $variable[] showing all indices.
2342
2343nest.c         Added support for $variable showing all nested variables.
2344
2345nest.c         Can now assign nested variables directly nested pairs of braces.
2346
2347nest.c         Added support for &variable reporting the variable's index.
2348
2349tokenize.c     Added #else command.
2350
2351parse.c        brackets now provide nesting so #var bla[bli bli] x will
2352               execute as #var {bla[bli bli]} instead of #var {bla[bli}
2353
2354data.c         Accessing an variable index now requires +1 instead of 1.
2355
2356mapper.c       Added MAP EXIT ROOM event.
2357
2358tokenize.c     Added #switch #case and #default commands.
2359
2360math.c         Fixed crash bug with #math.
2361
2362list.c         Added list srt and ins support for nested list variables.
2363
2364data.c         Sorting numeric variables as integers instead of as strings.
2365
2366text.c         Fixed crash bug in wordwrap code.
2367
2368net.c          Fixed double action triggering on prompts in split mode.
2369
2370variables.c    $1 now references the first variable, $2 the second, etc.
2371
2372variable.c     Uninitialized variables now return 0.
2373
2374data.c         Added nested variables. As in #var $bla[this][that] 1
2375
2376data.c         Changing from linked lists to sorted arrays.
2377
2378cursor.c       Replaced #cursor echo with 'echo on' and 'echo off'
2379
2380cursor.c       Modifying the input buffer while tabbing will reset the
2381               tab finder.
2382
2383
2384May 2009       1.99.6
2385--------------------------------------------------------------------------------
2386cursor.c       Added forward and backward tab completion patch by Ben Love.
2387
2388forkpty.c      Added forkpty patch by David Champion. It allows tintin to
2389               run on Solaris and other systems that lack forkpty().
2390
2391
2392April 2009     1.99.5
2393--------------------------------------------------------------------------------
2394*.c            Made code c++ compatible.
2395
2396system.c       Added 2nd argument to textin for a cumulative per line delay.
2397
2398telopt.c       Added event handlers for MSDP, NEW-ENVIRON, and ZMP.
2399
2400substitute.c   #sub {trigger} {.} no longer gags text, use #gag instead.
2401
2402substitute.c   Now allowing multiple substitutions per line which are
2403               automatically substring substitutions.
2404
2405
2406March 2009     1.99.4
2407--------------------------------------------------------------------------------
2408utils.c        Fixed 100 move map crash bug.
2409
2410input.c        Now sending \r on enter when using #run, seems to give the best
2411               behavior.
2412
2413log.c          Added xterm 256 color html logging.
2414
2415terminal.c     Disabled default ctrl-s and ctrl-q behavior.
2416
2417
2418March 2009     1.99.3
2419--------------------------------------------------------------------------------
2420data.c         Now properly inheriting triggers from the startup session.
2421
2422net.c          Now fetching IP address when connecting to a server.
2423
2424variable.c     Now possible to use escape codes in #replace
2425
2426vt100.c        Tabs are no longer stripped in the scrollback buffer.
2427
2428help.c         Updated event helpfile with event arguments.
2429
2430telopt.c       Added generic telnet subnegotiation event.
2431
2432telopt.c       Added better broken packet support for telnet negotiations.
2433
2434variable.c     now possible to use #var bla {} to set an empty variable.
2435
2436event.c        Extended the event handler to easily accept additional arguments.
2437
2438tinexp.c       Now possible to send NUL bytes with #send using \x00 or \c@.
2439               This is as far as the support for non strings goes though.
2440
2441tinexp.c       Can use #regex on an empty string now.
2442
2443input.c        Resetting command color at end of command.
2444
2445tinexp.c       %%w, %%*, etc, should escape properly now.
2446
2447parse.c        Fixed VERBATIM behavior, aliases can now be used in verbatim
2448               mode.
2449
2450alias.c        Now possible to #ignore aliases.
2451
2452highlight.c    Fixed highlights.
2453
2454
2455March 2009     1.99.2
2456--------------------------------------------------------------------------------
2457tinexp.c       Added pre-compiler for triggers, making them execute much faster.
2458
2459input.c        Macros now default to \ca to \cz for control characters instead
2460               of readline's \C-a to \C-z. This because PCRE uses \c and it
2461               makes sense to use a universal system. Old control codes still
2462               work.
2463
2464mapper.c       Can now use #map create {number of rooms}, by default the number
2465               of rooms is set to 15000. World size is stored as C <number> in
2466               map files.
2467
2468
2469February 2009  1.99.1
2470--------------------------------------------------------------------------------
2471
2472telopt.c       Added MSSP support, use: #config {debug telnet} on, to see the
2473               output from a MUD server supporting MSSP.
2474
2475tinexp.c       Added pre-parser to convert tintin globs to regexps.
2476
2477tinexp.c       Now using PCRE (Perl Compatible Regular Expressions)
2478
2479tinexp.c       Added \cx "control-x", where x is any character.
2480
2481tinexp.c       Added \0xx, where x is an octal number.
2482
2483
2484February 2009  1.99.0
2485--------------------------------------------------------------------------------
2486
2487misc.c         #showme and #echo now can have a / as a suffix to stop a
2488               linefeed from being added.
2489
2490vt100.c        Added an extra measure to prevent losing track of the cursor
2491               position.
2492
2493documentation  Updated the credits file and my mods file.
2494
2495tables.c       Added a full telnet option table.
2496
2497tables.c       Added END OF PATH event.
2498
2499tokenize.c     Now shows debug info for triggers with #debug enabled.
2500
2501buffer.c       No longer reprinting screen using page-up at the top of the
2502               scrollback buffer to stop refresh lag with slow terminals.
2503
2504tinexp.c       Fixed incorrect displaying of xterm 256 background colors.
2505
2506config.c       Removed timestamp config option, a scripted #event based
2507               alternative has been added to the SCRIPT file.
2508
2509cursor.c       Added cursor option for auto tab.
2510
2511config.c       Added auto tab option to set the amount of lines of the scroll
2512               back buffer used for auto tab completion.
2513
2514
2515January 2009   1.98.9
2516--------------------------------------------------------------------------------
2517
2518variable.c     Rewrote the 'd' format option to use a digit, mainly to enable
2519               the + option of normal digit formatting.
2520
2521parse.c        Fixed speedwalk toggle bug.
2522
2523tinexp.c       Added <g00> to <g23> xterm 256 color codes to support the
2524               greyscale colors.
2525
2526history.c      Updated history command with the list, size and character
2527               options.
2528
2529tokenize.c     Fixed ; issue sending out enters in the pre-parser.
2530
2531action.c       Fixed ; issue in actions, which managed to unfixed itself.
2532
2533history.c      Updated the history command, now takes #history list to view
2534               the command history.
2535
2536buffer.c       Updated the buffer command to use generic command interface.
2537
2538
2539December 2008  1.98.8
2540--------------------------------------------------------------------------------
2541
2542tokenize.c     New pre-parser to deal with nesting issues.
2543
2544misc.c         Added #while {var} {commands} command.
2545
2546misc.c         #loop no longer works like a while loop.
2547
2548misc.c         The $loop, $parse, and $forall variables are no longer
2549               automatically set.
2550
2551Makefile.in    Added tokenize.o
2552
2553files.c        #write now formats its output.
2554
2555tinexp.c       Casting regex arguments to integers so it works properly on os x.
2556
2557config.c       Added a config option to enable/disable MCCP support.
2558
2559variable.c     Changed %t format option to use a strftime format instead to
2560               print the current time.
2561
2562telopt.c       Streamlined telopt handling slightly to deal with MCCP errors.
2563
2564
2565October 2008   1.98.7
2566--------------------------------------------------------------------------------
2567
2568alias.c        Variables can be used in alias triggers, working pretty much
2569               the same way as they do in actions.
2570
2571mapper.c       When leaving a map a last room is set, which can be returned
2572               to with #map return. The last room is stored when saving a map,
2573               and #map return will work as well after reading in a map.
2574
2575help.c         Updated the math helpfile with available bit operations.
2576
2577misc.c         #echo no longer triggers actions.
2578
2579help.c         Updated the showme and echo help entries.
2580
2581mapper.c       #map map now takes an optional <x>x<y> size argument and an
2582               optional filename argument to log the map output to file.
2583               Useful for people who want to tail -f -s 0.1 a map window.
2584
2585config.c       Added a timestamp config option to add timestamps to log
2586               files using the strftime format.
2587
2588
2589September 2008 1.98.6
2590--------------------------------------------------------------------------------
2591
2592mapper.c       No longer need braces to use the delay option in map travel
2593               and map run.
2594
2595mapper.c       Added static room flag.
2596
2597mapper.c       Can now specify on/off for setting global flags and room flags.
2598
2599mapper.c       Added breadth first support for the map drawing routine, based
2600               on code by Bryan Turner.
2601
2602mapper.c       Added support for 3 letter room symbols.
2603
2604alias.c        Variables passed along as an alias argument now go by value
2605               instead of by reference.
2606
2607mapper.c       Added the asciivnums flag which displays room vnums in the ascii
2608               map.
2609
2610
2611August 2008    1.98.5
2612--------------------------------------------------------------------------------
2613
2614mapper.c       Added #map jump <x> <y> to goto rooms using coordinates
2615               relative to the user's current room.
2616
2617list.c         Added #script {var} {command} option.
2618
2619input.c        Fixed bug with the first input character being ignored in
2620               character mode.
2621
2622tinexp.c       Can now escape variables using 2 or more dollar signs.
2623
2624cursor.c       Fixed bug with ctrl-w
2625
2626cursor.c       Fixed bug with ctrl-r's input offset.
2627
2628mapper.c       When using #map find, run, and goto and there are multiple
2629               matching rooms the nearest room will be returned.
2630
2631
2632July 2008      1.98.4
2633--------------------------------------------------------------------------------
2634
2635cursor.c       Added glob/regex support to reverse history searches.
2636
2637tinexp.c       wildcard searches should work as old again, and regexp searches
2638               work more like old wildcard searches.
2639
2640tick.c         Can use variables for ticker names.
2641
2642mapper.c       Changed #map exit to #map exitcmd
2643
2644mapper.c       Added #map exitdir command, which allows setting a direction
2645               for unusual exits so they can be displayed on the map.
2646
2647mapper.c       Changed #map walk to #map run, and fixed the optional delay
2648               argument.
2649
2650mapper.c       Fixed optional delay argument for the #map travel command.
2651
2652mapper.c       Void rooms can have more than two exits again if the exits form
2653               a straight line.
2654
2655mapper.c       Fixed going through void rooms with #map travel.
2656
2657variable.c     #format will use the current time if no time value is provided
2658               for the %M %Y %D %d and %t arguments.
2659
2660mapper.c       asciigraphics is now the default map display setting.
2661
2662terminal.c     Enabled the ISIG flag allowing ctrl-c to be mapped.
2663
2664cursor.c       Updated ctrl-d to allow exiting tintin.
2665
2666cursor.c       Updated ctrl-c to clear the line rather than exiting tintin.
2667
2668config.c       Changed #config {echo command} to #config {command echo}
2669
2670config.c       Added the #config {command color} {<000>} option.
2671
2672mapper.c       #map insert now allows adding a roomflag as the 2nd argument.
2673
2674tinexp.c       Can now use %{variable} besides %0 - %99 in actions.
2675
2676
2677June 2008      1.98.3
2678--------------------------------------------------------------------------------
2679
2680mapper.c       It's now possible to use strings in the map legenda, mainly for
2681               terminals supporting UTF-8.
2682
2683mapper.c       Void rooms now work with unusual exits as well.
2684
2685mapper.c       Added some unlisted map commands to the #map and #help listing.
2686
2687input.c        Verbatim mode now only works on manual input, actions and macros
2688               will have their commands processed normally.
2689
2690mapper.c       #map map now accepts a given radius.
2691
2692config.c       #config packet patch now takes a floating point seconds argument
2693               instead of milli seconds. The valid input range is between 0.00
2694               and 10.00 seconds.
2695
2696config.c       Added the #config regexp on/off option.
2697
2698input.c        Added the RECEIVED INPUT event.
2699
2700tinexp.c       Added the match function to work with #config regexp.
2701
2702cursor.c       Added support for deleting words forwards using alt-d
2703
2704path.c         Added #path zip option to format a created path into
2705               speedwalk notation.
2706
2707tinexp.c       \[ and \] no longer escape to { and }, instead \x can
2708               be used, the values are shown in #help escape.
2709
2710tinexp.c       All regexp's should substitute escape codes.
2711
2712tintin19.txt   Rewrote the large manual file to contain a brief up to date
2713               manual instead. #help remains the primary help source.
2714
2715tintin15.cr    Removed the tintin15.txt copyright notice as the documentation
2716               by Robert Ellsworth is no longer used.
2717
2718May 2008       1.98.2
2719--------------------------------------------------------------------------------
2720
2721tables.c       Home and End now use cursor home and end.
2722
2723input.c        Added support for \x and \b in macros.
2724
2725net.c          Fixed a bug with stacking prompts.
2726
2727cursor.c       Pressing ctrl-r (history search) while searching will place
2728               the found search in the input field.
2729
2730cursor.c       Added left_word and right_word for alt b and f behavior.
2731
2732
2733March 2008     1.98.1
2734--------------------------------------------------------------------------------
2735
2736main.c         Command history is no longer automatically saved and loaded.
2737
2738history.c      Added history read and write option.
2739
2740cursor.c       Fixed displaying of ctrl-r reverse command history search.
2741
2742*.c            Added punctuation to most messages.
2743
2744*.c            Fixed function arguments overwriting action arguments.
2745
2746tinexp.c       { and } in triggers will be translated to \x codes.
2747
2748line.c         Added the line command to group #gagline and #logline.
2749
2750tables.c       Added the 'program termination' and 'received line' events.
2751
2752
2753February 2008  1.98.0
2754--------------------------------------------------------------------------------
2755
2756cursor.c       Added the #cursor enter option
2757
2758input.c        Fixed #macro usage in character mode.
2759
2760chat.c         Fixed an exploit to erase files with #chat.
2761
2762chat.c         Fixed a crash bug in the negatiation routine, apparently
2763               sscanf doesn't check line feeds.
2764
2765chat.c         Lowered the maximum read from socket size to half of
2766               BUFFER_SIZE to prevent buffer overflows.
2767
2768log.c          Fixed a coloring bug with html logging.
2769
2770alias.c        Fixed a bug with alias parsing.
2771
2772
2773December 2007  1.97.9
2774--------------------------------------------------------------------------------
2775
2776highlight.c    Added 'dark' as a valid color name.
2777
2778vt102.c        Added get_color_codes function.
2779
2780text.c         Now printing the previous color code on each new line.
2781
2782config.c       Added a color patching option.
2783
2784log.c          Fixed append logging in html mode for cygwin.
2785
2786parse.c        Went back to the more robust old school memory usage with
2787               some changes to still allow for recursion.
2788
2789telopt.c       re-enabled GA prompt handling.
2790
2791main.c         Fixed a bug with the startup argument routine.
2792
2793
2794November 2007  1.97.8
2795--------------------------------------------------------------------------------
2796
2797input.c        Fixed some chinese character related issues.
2798
2799parse.c        Fixed some chinese character related issues.
2800
2801tinexp.c       Added the option to use %00 to %99
2802
2803tinexp.c       Must now escape using %% rather than %%90
2804
2805path.c         Added #path run <delay> option.
2806
2807highlights.c   #highlight now colors all matches on a line.
2808
2809tinexp.c       Functions now only use %0 to %99 rather than &*
2810
2811
2812October 2007   1.97.7
2813--------------------------------------------------------------------------------
2814
2815variable.c     Fixed some coloring issues with the %w format option.
2816
2817input.c        Macros no longer trigger with config convert meta enabled.
2818
2819net.c          Fixed prompt handling issue for triggers in split mode.
2820
2821tinexp.c       Added the regexp command to use regexp string comparisons.
2822
2823
2824August 2007    1.97.6
2825--------------------------------------------------------------------------------
2826
2827input.c        Fixed some server side VT issues with command echoing.
2828
2829text.c         Tintin no longer line wraps when word wrap is disabled, this to
2830               fix pasting issues, and assuming that most terminals will line
2831               wrap correctly.
2832
2833history.c      No longer add input with less than 2 bytes to the history.
2834
2835cursor.c       Added prefix history searching.
2836
2837files.c        Fixed verbose behavior when reading a file which reads a file.
2838
2839net.c          Fixed address reporting in #session.
2840
2841variable.c     Added %w option to wrap text.
2842
2843
2844August 2007    1.97.5
2845--------------------------------------------------------------------------------
2846
2847               Fixed some bugs in socket handling.
2848
2849               #run now shows the stderr when failing to run.
2850
2851               Fixed a bug with #config {packet patch}.
2852
2853
2854July 2007      1.97.4
2855--------------------------------------------------------------------------------
2856
2857               Added the #run command to run various applications inside tintin.
2858
2859               Added packet defragmentation at the socket level.
2860
2861               Fixed a buffer overflow in the scrollback buffer's prompt
2862               handling.
2863
2864
2865July 2007      1.97.3
2866--------------------------------------------------------------------------------
2867
2868               Added the #script command to run any kind of script client side.
2869
2870               Fixed a variety of minor bugs.
2871
2872
2873June 2007      1.97.2
2874--------------------------------------------------------------------------------
2875
2876               Fixed buffer overflow with receiving several prompts.
2877
2878               Fixed bug with scrollback lines not being properly deleted.
2879
2880               Added #map explore and #map travel options.
2881
2882
2883May 2007       1.97.1
2884--------------------------------------------------------------------------------
2885
2886               Added #map insert
2887
2888               Fixed bug with #list fnd
2889
2890               Fixed bug with prompts in buffer
2891
2892               Set #delay {name} {command} {delay} as alternative syntax
2893               opposed to #delay {delay} {command}
2894
2895
2896April 2007     1.97.0
2897--------------------------------------------------------------------------------
2898
2899chat.c         Configure now detects a missing pthread library.
2900
2901tick.c         Delay now takes a name argument as the 3rd argument.
2902
2903tick.c         Added #undelay command.
2904
2905cursor.c       Added the option to paste deleted input with ctrl-y
2906
2907
2908March 2007     1.96.9
2909--------------------------------------------------------------------------------
2910
2911list.c         Added #list {list} clr option to empty a list.
2912
2913list.c         Added #list {list} srt option to insert in alphabetic order.
2914
2915parse.c        Defined a COMMAND_SEPARATOR variable instead of ';' checks.
2916
2917utils.c        Fixed some display issues for #showme and untriggered prompts
2918               in split mode.
2919session.c      Now uses #session {name} {host} {port}
2920
2921tinexp.c       Can now use %0 (all args) and %1 to %9 in functions.
2922
2923memory.c       Increased the maximum internal memory size from 10 to 50KB.
2924
2925debug.c        Set the maximum number of iterations to 10K.
2926
2927
2928February 2007  1.96.7
2929--------------------------------------------------------------------------------
2930
2931mapper.c       Fixed fast forwarding shortest path searches through void rooms.
2932
2933mapper.c       Fixed #map link not deleting old links.
2934
2935mapper.c       Fixed drawing of void rooms.
2936
2937help.c         Added a cleaned up version by Simon.
2938
2939cursor.c       History next and prev now put the cursor at the end of the line.
2940
2941gag.c          Seperated gags from substitutions.
2942
2943files.c        Inproved accuracy of #read's error report.
2944
2945path.c         Merged all path commands into one generic path command.
2946
2947
2948March 2007     1.96.8
2949--------------------------------------------------------------------------------
2950
2951main.c         Added getopt supported command-line argument handling.
2952
2953main.c         Added [-t title] option to set the title bar.
2954
2955files.c        Now stripping all trailing spaces and tabs in #read.
2956
2957utils.c        Added show_debug command to display debug messages a bit easier.
2958
2959net.c          Added IPv6 support.
2960
2961cursor.c       Added cursor_echo function to toggle local echo.
2962
2963cursor.c       Added cursor_insert function to toggle insert mode.
2964
2965tinexp.c       Using $variable[index] now works with lists.
2966
2967variable.c     Can set list indexes with #var {variable[index]} {text}
2968
2969
2970January 2007   1.96.6
2971--------------------------------------------------------------------------------
2972
2973cursor.c       Fixed behavior of ctrl-e for osx.
2974
2975log.c          Fixed newly introduced crashbug with #logline
2976
2977highlight.c    Now parses <###> color codes to allow for 256 colors.
2978
2979function.c     Can now use undescores in function names.
2980
2981tables.c       Added map list for #map undo and message handling.
2982
2983main.c         Added pathdirs for diagonal exits and spatial coordinate info.
2984
2985mapper.c       Now using spatial coordinates from pathdirs. This requires
2986               users to reset their saved pathdirs. If used correctly mapping
2987               should work for muds with a non standard exit system.
2988
2989mapper.c       Added movement history for #map undo
2990
2991mapper.c       Updated #map undo to use the map movement history
2992
2993cursor.c       Fixed bug in ctrl-e behavior
2994
2995misc.c         Removed old debug message in #send.
2996
2997mapper.c       Added room symbols.
2998
2999mapper.c       Added #map set to set various attributes
3000
3001mapper.c       Added #map get to get various attributes and store them as
3002               variables.
3003
3004mapper.c       #map walk {location} {0.5} will now run to the location with
3005               0.5 second delays between commands.
3006
3007input.c        Added input_printf for consistent echo handling
3008
3009tables.c       Added generic variable and function substitution for #map
3010
3011input.c        Now checking for negative characters when converting meta
3012               characters. Should fix issues when creating macros with
3013               swedish and german characters.
3014
3015buffer.c       Can now use #buffer f with negative numbers to find the first
3016               instead of last occurance of a string. Also made the no match
3017               found string triggerable.
3018
3019mapper.c       Can now use case insenstive room finding with wildcards in
3020               #map find and other room search related commands.
3021
3022tintin.h       Placed lists in alphabetical order.
3023
3024event.c        Added a basic event system, check #event
3025
3026
3027December 2006  1.96.5
3028--------------------------------------------------------------------------------
3029
3030buffer.c       fixed up color handling of commands.
3031
3032*.c            Put on my dirty boots and annihilated all lib readline related
3033               stuff. Readline sucks donkey balls. You can quote me on that.
3034
3035terminal.c     Merger of echo.c and scrsize.c
3036
3037terminal.c     Added init_terminal to force character mode for input handling.
3038
3039terminal.c     Added custom screensize handling.
3040
3041rl.c           Now forwarding data on stdin to input.c
3042
3043input.c        Added basic command parsing options.
3044
3045history.c      Added tintin-esque command history support.
3046
3047cursor.c       Deals with cursor handling for input.c
3048
3049tables.c       Added a command table for cursor.c
3050
3051cursor.c       Added support for some readline-esque input handling.
3052
3053tab.c          Added my own (improved) tab handling.
3054
3055tab.c          Moved tab handling to cursor.c
3056
3057vt102.c        Made some improvements to the VT102 support.
3058
3059cursor.c       Added history browsing with up, down, ctrl-p and ctrl-n. Made
3060               some minor improvements over the readline version.
3061
3062utils.c        Added ins_sprintf function that properly inserts a string
3063               within another strong. Has formatting capabilities.
3064
3065input.c        Added process_input as the main input function.
3066
3067input.c        Added read_line function for default command parsing.
3068
3069input.c        Added read_key function for character mode.
3070
3071main.c         Moved suspend and exit functions to main.c
3072
3073main.c         Fixed #suspend handling.
3074
3075split.c        Now adjusting NAWS when changing split screen.
3076
3077cursor.c       Added do_cursor for using cursor features in macros.
3078
3079history.c      Added do_history for history manipulation.
3080
3081rl.c           Moved to update.c
3082
3083*.c            Tintin is now officially lib readline free. Good riddance.
3084               The binaries are 40% smaller.
3085
3086tinexp.c       Added 256 xterm color support using <aaa> to <fff> with rgb
3087               values. Background colors are set with <AAA> to <FFF>
3088
3089tintin.h       Added gtd->flags for global flags instead of using cludgy
3090               flags on gts->flags.
3091
3092cursor.c       Added cursor_redraw_line routine which adds readline input
3093               scrolling behavior. Tintin will probably work quite poorly on
3094               non VT100 terminals now.
3095
3096tables.c       Added list flags to work around the fact that I use lists for
3097               stuff they weren't originally intended for. Updated list parsers
3098               throughout the source code.
3099
3100main.c         Added a signal handler for SIG_TSTP to handle ctrl-z smoothly.
3101
3102input.c        Escaped unmatched sequences are now automagically meta converted.
3103
3104cursor.c       history prev and next can now be used in combination with the
3105               history search function.
3106
3107mapper.c       Improved map drawing by using virtual coordinates.
3108
3109mapper.c       Added a flag to enable vt graphics mode. A hopefully universal
3110               legenda is: 250 223 222 200 220 186 201 204 221 188 205 202 187
3111               185 203 206 246
3112
3113mapper.c       Added a flag to draw 6x3 ascii graphics which allows displaying
3114               rooms going ne, nw, se, sw, u, and d.
3115
3116misc.c         Can no longer use commas in #loop. When using 1 argument with
3117               #loop it's assumed
3118
3119misc.c         Can now use math in delays, as in #delay 1d5 smile.
3120
3121mapper.c       Added the void roomflag which can be used to turn rooms into
3122               links. This is mainly useful to fit overlapping areas on the
3123               same map without using the hide flag.
3124
3125
3126December 2006  1.96.4
3127--------------------------------------------------------------------------------
3128
3129class.c        classes are now properly inherited from the main session.
3130
3131misc.c         fixed chinese character issue with #parse.
3132
3133parse.c        fixed parsing issues introduced in 1.96.3.
3134
3135mapper.c       debugged and updated alpha mapping code to beta.
3136
3137tables.c       added a mapping related sub-command table.
3138
3139
3140November 2006  1.96.3
3141--------------------------------------------------------------------------------
3142
3143telopt.c       Updated telopts to login on globalvillage bbs.
3144
3145buffer.c       Added buffer find option, which works much like grep but instead
3146               places the scrollback buffer at the given search string.
3147
3148tinexp.c       Can now add lists of keywords between square brackets divided
3149               by seperators, for example [his|her|its] in actions. The actual
3150               text is stored in the next %0-9. Cannot be used for highlights.
3151
3152list.c         array_fnd function allows searching for words in lists.
3153
3154path.c         can now save loaded paths backward.
3155
3156
3157August 2006    1.96.2
3158--------------------------------------------------------------------------------
3159
3160variables.c    Removed #getitemnr, obsolete with the #list command.
3161
3162variables.c    Removed #getlistlength, obsolete with the #list command.
3163
3164variables.c    Removed #removestring, obsolete with the #replacestring command.
3165
3166math.c         Added tineval to properly evaluate == and !=
3167
3168chat.c         Now setting NONBLOCK on the chat port due to reports about
3169               disconnects hanging tintin.
3170
3171config.c       Added #config {log level} {low|high} which is a hidden config
3172               option. Defaults to high, when set to low tintin will log the
3173               raw mud output.
3174
3175
3176August 2006    1.96.1
3177--------------------------------------------------------------------------------
3178
3179misc.c         Fixed a spacing issue in do_showme.
3180
3181mapper.c       Fixed map drawing.
3182
3183telopt.c       Fixed telnet negotations to login on ISCA BBS.
3184
3185math.c         Commas are now stripped from numbers.
3186
3187math.c         Added support for floating point math.
3188
3189tick.c         Can use 1d10 etc for the times in #delay.
3190
3191main.c         Added -h and -e as startup options.
3192
3193
3194June 2006      1.96.0
3195--------------------------------------------------------------------------------
3196
3197data.c         Rewrote #killall to accept arguments to kill specific lists.
3198
3199chat.c         Added #chat unitialize.
3200
3201chat.c         Added basic support for group chats.
3202
3203chat.c         Added support for colored names.
3204
3205highlight.c    Fixed crash bug for invalid highlights.
3206
3207class.c        Fixed crash bug with #killall related to classes.
3208
3209chat.c         Added #chat send which allows sending custom chat commands.
3210
3211chat.c         Fixed link lost crash bug.
3212
3213
3214April 2006     1.95.9
3215--------------------------------------------------------------------------------
3216
3217input.c        Fixed some bugs in the character mode support.
3218
3219misc.c         Placed the functions in alphabetic order and added #SEND which
3220               will send the given argument directly to the mud. Useful for
3221               sending escape sequences because you cannot start a mud
3222               command with an escape sequence.
3223
3224scrsize.c      If in character mode tintin depreps the terminal temporarily
3225               when sending NAWS. Yet another annoying readline bug.
3226
3227chat.c         Added DND (do not disturb) feature. When enabled tintin will
3228               no longer accept new chat connections.
3229
3230               Fixed a bug in the DNS lookup routine for addresses starting
3231               with a number.
3232
3233               Can now chat to people by entering their ip address. Useful to
3234               deal with auto ip bans.
3235
3236parse.c        Complex multi words aliasses are now possible.
3237
3238data.c         Priority lists are now sorted alphabetically per priority level
3239class.c        #class class read <file> no longer parses files for the given
3240               class. The code was too messy to maintain. Instead it'll open
3241               the class, read the file, and close the file.
3242
3243alias.c        Added support for complex multi word aliasses.
3244
3245chat.c         Added #chat public option, accepts the all argument.
3246
3247chat.c         Added #forward all which included session output
3248chat.c         Added #color which sets the default color
3249chat.c         Added a boost option for #chat accept to quadruple download
3250               speeds, might cause file corruption on bad connections.
3251
3252class.c        Rewrote some code, #unclass should work now.
3253
3254data.c         Issueing #tick {name} twice will now reset the ticker.
3255
3256math.c         Fixed invalid input handling.
3257
3258misc.c         Snooping a non existant session no longer crashes tintin.
3259
3260
3261March 2006     1.95.8
3262--------------------------------------------------------------------------------
3263
3264buffer.c       While the concept works the code should be more solid. Fixed
3265               some bugs in the buffer code causing scrolling to crash
3266               on long help files.
3267
3268buffer.c       Added a #buffer lock option which resembles scroll lock.
3269
3270log.c          Fixed a bug in #log append which caused it to not generate
3271               html headers.
3272
3273chat.c         Modified the threaded chat functions to minimize accessing
3274               global data.
3275
3276chat.c         Fixed formatting bug causing chat messages containing %s to
3277               crash the client.
3278
3279chat.c         #chat who now shows user flags
3280parse.c        Removed old code that allowed using " " instead of { } in
3281               a couple of commands such as #format. While I used it in
3282               some example scripts the code is causing problems.
3283
3284data.c         Can now use #unmacro by exactly matching the macro instead of
3285               having to use \\ for a single \.
3286
3287input.c        TinTin now enables character mode with echo off and SGA enabled.
3288
3289
3290December 2005  1.95.7
3291--------------------------------------------------------------------------------
3292
3293main.c         Added a command reference table to speed up the processing of
3294               commands slightly.
3295
3296tinexp.c       The body of a by braces surrounded variable name will be
3297               substituted now, allowing variables as variable names.
3298
3299parse.c        No longer sending message spam when using an alias
3300buffer.c       Fixed a long standing crash bug in the buffer cleanup routine.
3301
3302tinexp.c       Now matching arguments in triggers like the old tintin did. This
3303               will interfere with a couple of triggers but shouldn't be too
3304               big a problem. %0 to %9 will capture the smallest possible
3305               amount of text instead of the biggest.
3306
3307telopt.c       IAC EOR and GA spams are dealt with better with {debug telnet}
3308               enabled.
3309
3310telopt.c       Dealing with packet fragmentation in the odd case an IAC EOR or
3311               GA code is split, not sure if it works since it's hard to test.
3312
3313
3314October 2005   1.95.6
3315--------------------------------------------------------------------------------
3316
3317chat.c         Added multi threading for opening new chat connections.
3318
3319parse.c        Added protection for infinite loops.
3320
3321utils.c        Added hex_number translation function.
3322
3323tinexp.c       Can now use \x?? where ?? is a hexadecimal number.
3324
3325*.c            Changed usage of \e with \033 since \e isn't supported on all
3326               systems.
3327
3328misc.c         #debug all log, logs debug info without displaying it.
3329
3330Makefile.in    make install now copies tt++ to /usr/bin
3331parse.c        Can now disable verbatim mode after enabling it.
3332
3333tables.c       Got rid of unneeded table size for the command, help, and
3334               config table.
3335
3336variable.c     Added %D %M %Y options to print the day month year.
3337
3338misc.c         Added parse command to parse strings.
3339
3340misc.c         Fixed double variable substitution for #echo.
3341
3342
3343August 2005    1.95.5
3344--------------------------------------------------------------------------------
3345
3346chat.c         Added some extra chat functionality: paste, serve, forward,
3347               ignore and peek.
3348
3349tinexp.c       Fixed parsing of function arguments some more.
3350
3351list.c         Added #list command with basic list support.
3352
3353
3354August 2005    1.95.4
3355--------------------------------------------------------------------------------
3356
3357tinexp.c       Fixed some bugs in substitute that slipped in.
3358
3359tinexp.c       Added skipping of chinese characters in regexp functions.
3360
3361data.c         Fixed crash bug with killing classes
3362function.c     Fixed an issue with #return in fuctions stopping the execution
3363               of multiple commands.
3364
3365rl.c           pressing control-c while connecting will abort the connection
3366               instead of exiting the program.
3367
3368chat.c         Added back the chat module that was originally included with
3369               version 1.86. I pretty much rewrote it while at it.
3370
3371configure      BIG5 configuration was giving me issues on slackware.
3372
3373               Since I didn't feel like figuring out how the script works
3374               I changed it from --enable-big5 to --big5 and fiddled with
3375               the script till it seemed to work again.
3376
3377
3378July 2005      1.95.3
3379--------------------------------------------------------------------------------
3380
3381tinexp.c       Now substituting functions and arguments (if needed) in a
3382               function's argument list.
3383
3384tinexp.c       Ending a command with \ will escape the EOL (\r\n) which won't
3385               be appended to the end of the line. Same story for #showme.
3386
3387telopt.c       Added negotiating of EOR (end of record).
3388
3389telopt.c       IAC GA and EOR will now be seen as prompt markers.
3390
3391files.c        Now skipping chinese characters in #read
3392
3393
3394July 2005      1.95.2
3395--------------------------------------------------------------------------------
3396
3397data.c         Added option to use 'all' in #message, #ignore, and #debug to
3398               toggle everything at once.
3399
3400files.c        Removed the #writesession command, it's obsolete with the new
3401               #class command.
3402
3403class.c        #class write now adds #class open/close to the begin and end
3404               of the file.
3405
3406files.c        Cleaned up a bunch of confirmation messages and made them
3407               gaggable.
3408
3409tab.c          Variables and functions in a #tab are now substituted at
3410               evaluation time.
3411
3412
3413Juny 2005      1.95.1
3414--------------------------------------------------------------------------------
3415
3416files.c        If the bracing level is off in the last line tintin reports
3417               the correct line instead of 0.
3418
3419rl.c           reading the default readline init file when leaving tintin.
3420               Should help with a couple of shells not handling this properly.
3421
3422echo.c         removed some experimental code that ended up causing double
3423               echoing when switching between sessions.
3424
3425split.c        fixed screen switching for muds with native vt102 interfaces.
3426
3427session.c      added #session {-|+|number} options to switch between sessions.
3428
3429files.c        no longer showing output while using #scan to speed things up
3430               for huge log files.
3431
3432misc.c         Added #return which used in an #if check allows bailing out of
3433               a semicolon seperated command string. If used in a #function
3434               you can also add an argument to it to set the result, as
3435               opposed to setting the $result variable directly.
3436
3437
3438June 2005      1.95.0
3439--------------------------------------------------------------------------------
3440
3441macro.c        Added prompt handling for macro's. Still not perfect.
3442
3443scrsize.c      Fixed resetting of split data when resizing the screen.
3444
3445split.c        Now drawing split lines on all static regions to increase
3446               clarity for newbies.
3447
3448misc.c         Can now use #showme {text} {row}, with a row number given
3449               #showme will act like #prompt.
3450
3451misc.c         Can use #echo {{format} {row}} {{arguments}} as well.
3452
3453rl.c           Fixed #snoop messing up in #split mode.
3454
3455parse.c        Got rid of the code seperating high and low priority actions,
3456               no longer valid with the #gagline command.
3457
3458antisubstitute Removed antisubstitutions since there seems little reason to
3459               ever need them.
3460
3461rl.c           Checking internal messages for prompt gags now
3462
3463
3464May 2005       1.94.9
3465--------------------------------------------------------------------------------
3466
3467files.c        Added #scan {filename} which will read in a file and send it to
3468               the screen as if it was send by a mud. This allows one to view
3469               raw color logs, turn on logging and save the file in a different
3470               format, as well as adding gags and other text filters to make
3471               things more readable. I set the default logging mode to raw
3472               since ansi log files can now be converted to html ones.
3473
3474data.c         updatenode_list was acting odd, fiddled with it till it stopped
3475               crashing. Not sure what the problem was.
3476
3477
3478May 2005       1.94.8
3479--------------------------------------------------------------------------------
3480
3481rl.c           Fixed packet patch, and added a default patcher for split mode.
3482               Fixed the displaying of #alias, #action, etc.
3483
3484
3485May 2005       1.94.7
3486--------------------------------------------------------------------------------
3487
3488main.c         Fixed #split mode being handled correctly when suspending a
3489               session.
3490
3491data.c         Removed excessive color usage when displaying triggers which was
3492               resulting in crashes.
3493
3494rl.c           No longer clearing the screen when exiting tintin++.
3495
3496table.c        Added flags for commands, so far only automatically substituting
3497               variables and functions for commands that have the sub flag.
3498
3499
3500May 2005       1.94.6
3501--------------------------------------------------------------------------------
3502
3503rl.c           Now adding all keyboard input to the scrollback buffer.
3504
3505rl.c           When in #split mode with no #prompt defined tintin tries to
3506               mimic normal behavior, which includes placing input at the
3507               end of the prompt.
3508
3509prompt.c       #prompt matched lines are now written to the scrollback buffer,
3510               to simulate the old behavior make an #action executing #gagline.
3511
3512
3513May 2005       1.94.5
3514--------------------------------------------------------------------------------
3515
3516rl.c           Fixed a bug that caused prompts to be printed twice.
3517
3518debug.c        Fixed possible crash from overloading the debug stack.
3519
3520variable.c     Added #debug messages for #replacestring and #format.
3521
3522split.c        Fixed various #split bugs when creating or switching sessions.
3523
3524buffer.c       #buffer {i} will now give some info about the scrollback buffer.
3525
3526tick.c         #delay now works in the startup session. Tickers are still
3527               disabled.
3528
3529class.c        #class <class> read <file>, now only reads in stuff that belongs
3530               to the given class name. Hence in order for this to work you
3531               need #class <class> open, and #class <class> close, calls in
3532               the file itself for this to work.
3533
3534help.c         Removed David Chan from the credit screen shown when starting
3535               up TinTin++. I'm sure he had the best intentions, but he spend
3536               two years making insignificant changes, fiddling with variables,
3537               adding patches written by others, before vanishing into thin air.
3538
3539
3540April 2005     1.94.4
3541--------------------------------------------------------------------------------
3542
3543tintin.h       Now using strtoll instead of atoll since old platforms only
3544               support strtoll.
3545
3546telopt.c       With #config {CONVERT META} set to ON mud output will have
3547               it's meta characters translated, this to aid in making color
3548               triggers.
3549
3550split.c        Using #split 0 0 will create an input line without the split
3551               line. Useful for people who don't use #prompt.
3552
3553
3554April 2005     1.94.3
3555--------------------------------------------------------------------------------
3556
3557log.c          Now flushing the log stream after every call so tailing a log
3558               file is an option.
3559
3560class.c        Finished the #class command.
3561
3562split.c        placed #prompt stuff in prompt.c.
3563
3564tinexp.c       Added option to start a trigger with ~ in which case colors
3565               are included in string comparisons and substitutions.
3566
3567buffer.c       Removed the #writebuffer command, must now use:
3568               #buffer {write} {filename}
3569
3570
3571May 2005       1.94.2
3572--------------------------------------------------------------------------------
3573
3574rl.c           Internal messages are now printed to both the logfile and
3575               scrollback buffer.
3576
3577rl.c           Fixed internal messages bumping the screen while scrolling in
3578               locked mode.
3579
3580rl.c           Fixed a bug with displaying text that slipped in.
3581
3582buffer.c       Added the option to use #buffer h/u/d/e for scrolling.
3583
3584tintin.h       Removed unused macro DEFAULT_FILE_DIR.
3585
3586utils.c        utime() function doesn't work correctly on cygwin, changed it's
3587               behavior to guarantee unique time stamps.
3588
3589buffer.c       No longer writing #grep output the the scrollback buffer
3590main.c         Now clearing last command (often quit) when starting up tintin++
3591config.c       Turned #debugtelnet command into a hidden config option.
3592
3593               Added a hidden config option named CONVERT META, which turns key
3594               presses into macro readable keyboard input.
3595
3596class.c        Added basic support for classes, which is grouping for real.
3597tables.c       Set substitute priority to save correctly.
3598
3599
3600May 2005       1.94.1
3601--------------------------------------------------------------------------------
3602
3603log.c          Added the option for a second argument to the #logline command.
3604               If second argument is used it will instead print the given line
3605               to file.
3606
3607variable.c     Added %G thousandgroupingstring function to format to change
3608               for example 1000 into 1,000.
3609
3610
3611May 2005       1.94.0
3612--------------------------------------------------------------------------------
3613
3614rl.c           mainloop now uses a threaded call for the old mainloop. This
3615               because the readline() function is blocking and I'm too lazy
3616               to code the stuff readline takes care of.
3617               The new mainloop tries to go at 100 loops per second.
3618
3619session.c      Got rid of connect_delay for connecting sessions. Now using
3620               1 timer.
3621
3622tick.c         Changed #ticker to use floating point precision.
3623
3624               Added delay command: #delay {seconds delay} {command}
3625
3626variable.c     #format, added %L to print the argument's string length, and
3627               %U to print the number of micro seconds since epoch, increased
3628               the number of arguments from 10 to 20.
3629
3630misc.c         Removed the #sleep command, never worked well and should be
3631               obsolete with the #delay command.
3632
3633misc.c         #gagline, when called within an action it will gag the line.
3634
3635rl.c           The #snoop code wasn't working, fixed it up.
3636
3637data.c         Increased the buffer of show_list a little to avoid an overflow
3638
3639macro.h        Changed how macros work, fixing problems like needing a \n at
3640               the end, needing an empty line, macros being added to the
3641               command history. Still can't find a way to have rl erase macros.
3642
3643               Players can enter a command within a line of text using
3644               [[ command ]].
3645               Example: tell bubba (long line) [[chat hi bibbi]] (more text)
3646
3647rl.c           Added the option to delay displaying and parsing possibly broken
3648               packets. Delay in micro seconds can be set with the PACKET PATCH
3649               config option. By default it's set to 0 (disabled).
3650
3651variables.c    Fixed #replacestring which got messed up while I added variable
3652               substitution to it.
3653
3654rl.c           Fixed echoing of commands in split mode.
3655
3656split.c        Changes split and prompt to work more logical, people might
3657               have to change their scripts, new syntax:
3658               #split {number of top lines} {number of bottom lines}
3659               default equals: #split {0} {1}
3660               Fixed possible color bleeding in the split line, this for noobs
3661               who don't know how to use tintin's color codes.
3662
3663files.c        /* and */ now only work when used outside braces.
3664
3665rl.c           No more threading, made tintin crashy as well.
3666
3667variable.c     Added %n (name) to #format, which capitalizes the first letter
3668               of the given string.
3669
3670buffer.c       No longer resetting the buffer if the new scrollback size
3671               is the same as the old one.
3672
3673rl.c           prompts automatically get a newline added in split mode.
3674
3675session.c      Fixed problem with aliasses changing focus.
3676
3677rl.c           Made #snoop output non triggerable.
3678
3679misc.c         Added the $loop and $forall variables set in the #loop and
3680               #forall commands. Avoids dodgy &0 behavior in #functions.
3681
3682telopt.c       Added dynamic allocation of buffer space for mccp and the
3683               normal output buffer.
3684
3685rlhist.c       1 character long commands are once again added to the command
3686               history.
3687
3688files.c        If a bracket is missing TinTin gives a hint at what line the
3689               error might be.
3690
3691tinexp.c       Added option to surround a variable with brackets.
3692
3693variables.c    Removed restrictions on variable names.
3694
3695math.c         Fixed bug with #if returning the wrong session pointer.
3696
3697log.c          Added #logline command for actions to log 1 line of text
3698rlhist.c       If no repeat match is found an error message is printed.
3699
3700parse.c        Added a check to ingore a trailing ';'.
3701
3702data.c         Increased buffer size for displaying aliasses.
3703
3704config.c       Changed packet patch config option from micro to milli seconds.
3705
3706files.c        Changed calls to isblank() (GNU only) with isspace()
3707files.c        Only stripping leading spaces now, so #var bla { } will work
3708               once again.
3709
3710files.c        I got tired of confusing readnew and readold, so I removed
3711               readold.
3712
3713
3714February 2005  1.93.9
3715--------------------------------------------------------------------------------
3716
3717split.c        Fixed infinite loop in do_unprompt
3718
3719rl.c           Added the option to call show_message() with a NULL argument
3720               for more generic usage.
3721
3722tintin.h       Set BUFFER_SIZE to 10000 OUTPUT_SIZE to 65000
3723               and FILE_SIZE to 150000
3724
3725files.c        Added option to #read and #write using a variable.
3726
3727buffer.c       Fixed some dodgy behavior of the scroll back buffer, it should
3728               scroll ultra fast as well now.
3729
3730               The buffer command now only prints the last screen worth of
3731               text, too lazy to re-code floating screen indexes atm.
3732               Added scroll lock to the config menu, to freeze the screen
3733               while scrolling.
3734
3735
3736February 2005  1.93.8
3737--------------------------------------------------------------------------------
3738
3739tick.c         Took care of uninitalized tickers firing prematurely.
3740
3741session.c      Added option to make a trigger on session termination.
3742
3743files.c        Added a check for #read being used on a directory.
3744
3745rl.c           Fixed home/end keys being bound correctly.
3746
3747split.c        Allowing multiple prompt triggers to fire on the same line
3748               Fixed split line being 4 '-' short
3749
3750
3751December 2004  1.93.7
3752--------------------------------------------------------------------------------
3753
3754tinexp.c       Now only converting ; to : for actions, not for aliasses etc.
3755
3756path.c         Made END OF PATH message triggerable.
3757
3758variable.c     added the do_internal_variable command, which does the same
3759               as do_variable, but allows to set a blank variable. Used by
3760               do_format and do_replacestring.
3761
3762rl.c           added the show_message function which only shows messages from
3763               setting aliasses, variables, etc when called from the command
3764               line, unless debug is enabled.
3765
3766rl.c           Now using the more_output buffer previously only used by the
3767               scrollback buffer to double check actions.
3768
3769
3770December 2004  1.93.6
3771--------------------------------------------------------------------------------
3772
3773net.c          Fixed a crash bug that slipped in with hiding passwords.
3774
3775net.c          Commands are now added to the buffer/log files while in split
3776               mode.
3777
3778highlight.c    Fixed bug with variables and functions not being used.
3779               Finished highlight code, it no longer messes up old colors.
3780
3781
3782October 2004   1.93.5
3783--------------------------------------------------------------------------------
3784
3785files.c        Added the option to comment using /* comment */ in script files.
3786
3787math.c         Upgraded to do 64 bit instead of 32 bit operations.
3788
3789variables.c    Added the replacestring command.
3790
3791mapper.c       Added the function find_coord, which tries to find a room at the
3792               given coordinate, starting room being 0,0,0
3793
3794
3795October 2004   1.93.4
3796--------------------------------------------------------------------------------
3797
3798math.c         Fixed a crash bug that slipped in.
3799
3800tinexp.c       Set \[ to escape as { and \] to escape as }.
3801
3802main.c         Now setting application keypad mode and ESC 0 prefix on startup.
3803
3804telopt.c       Changed dont_oldenviron response to wont_oldenviron response,
3805               reported to fix the ability to login on some server types.
3806
3807
3808September 2004 1.93.3
3809--------------------------------------------------------------------------------
3810
3811log.c          Fixed a typo that broke the log command, as well as adding
3812               newlines to plain logging.
3813
3814rlhist.c       one letter commands are no longer added to the history.
3815
3816
3817August 2004    1.93.2
3818--------------------------------------------------------------------------------
3819
3820mapper.c       added the redit command, for basic mapper manipulation, still
3821               needs a bit more work.
3822
3823telopts.c      Added a telnet patch from Julia Longtin which adds the basic
3824               telopt negotiations to initialize a telnet session when
3825               connecting to port 23.
3826
3827rl.c           Seeming the readline_echoing_p is reset to TRUE whenever
3828               something is written to the terminal, so I simply set it to
3829               whatever it should be several times a second now in the main
3830               loop.
3831
3832
3833July 2004      1.93.1
3834--------------------------------------------------------------------------------
3835
3836tintin.h       added a room and exit structure for an auto mapper.
3837
3838mapper.c       added a creation functions for rooms and exits.
3839
3840files.c        added the #readmap function to read in a map.
3841
3842mapper.c       added a routine to display an ascii map.
3843
3844mapper.c       added an algorithm to calculate the shortest path between two
3845               rooms.
3846
3847main.c         the verbatimchar is set as \\ instead of \ as default, this to
3848               allow escaping braces at a later date with this config option
3849               causing trouble.
3850
3851
3852June 2004      1.93.0
3853--------------------------------------------------------------------------------
3854
3855log.c          added variable substitution to *arg.
3856
3857misc.c         added variable substitution to *arg.
3858
3859parse.c        changed escape character behavior, #format will need %+4s
3860               instead of %4s if used in an argument or action. Used to
3861               be possible to use \%4s but that's no good.
3862
3863tinexp.c       \a \e \n \r \t are now translated to the according characters.
3864               (\a equals what #bell does, \r\n would equal #cr, \e is ESC)
3865
3866parse.c        removed premature stripping of '\' character in the parsing
3867               routines. Escaped characters are dealt with when data is send
3868               to the mud or screen.
3869
3870
3871April 2004     1.92.0
3872--------------------------------------------------------------------------------
3873
3874misc.c         removed speedwalk command, it's a config option anyways.
3875
3876
3877March 2004     1.91.0
3878--------------------------------------------------------------------------------
3879
3880parse.c        made sure $variables are substituted in the parsing command,
3881               as well as $vars being substituted as session A passes a
3882               command to session B. Otherwise variables remain variable
3883               untill the final execution stage.
3884
3885data.c         Added nesting syntax highlighting for lists.
3886
3887math.c         Added support for "T" and "F" (feature was lost in rewrite)
3888
3889math.c         Added the 'd' operator for a random dice roll
3890
3891config.c       rewrote some basic stuff in the configuration routines,
3892               the original setup was a bit dodgy.
3893
3894highlight.c    Added priorities to highlighting
3895
3896substitute.c   Added priorities to substitutions
3897
3898split.c        Added check so a prompt isn't shown for background sessions.
3899
3900variable.c     Added %R and %C to #format for nr of rows and columns
3901
3902
3903March 2004     1.90.0
3904-------------------------------------------------------------------------------
3905
3906misc.c         added a higher precision to the #sleep command, you can now
3907               enter #sleep 0.5 to sleep for half a second, precision is in
3908               miliseconds. Also using nanosleep now, with additional support
3909               to continue sleeping.
3910
3911variables.c    added %t to #format, which will print the epoch time.
3912               added %T to #format, which will print the military time
3913               of the provided number as: hours:minuts
3914               added %d to #format, which will print the military data of the
3915               provided number as: day:month:year (if there's no such thing
3916               as a military date I hope you still know what I mean).
3917
3918rl.c           set tintin to 100 loops per second, might seem too much, but
3919               it doesn't matter cpu wise, and it's always fun when tintin's
3920               triggers beat those of most other client.
3921
3922math.c         added + - ! and ~ to the mathexp interpreter.
3923
3924regexp.c       added color support. codes are entered as <abc> and is pretty
3925               much translated as : \e[a;b+30;c+40m with '8' counting as
3926               a skipped color code. People can write their own functions to
3927               make tintin display colors of their own choice.
3928
3929variables.c    added %R to #format, which will print a number between 1 and
3930               the given number in the argument. Removed #random command.
3931               added %m to #format, which will do the same as #math
3932
3933regexp.c       added option for end of line terminator ^ so adding ^ to the
3934               end of the line will make tintin return false if the regexp
3935               returns with an unfinished match string.
3936
3937main.c         I update the credit screen, figured it would appropriate to
3938               put my own name on it after all this work. I turned it into
3939               a helpfile while at it, #help credits should show it.
3940
3941regexp.c       made the substitute recursively double check variables and
3942               functions if they hold a variable of a different kind, useful
3943               for variables or functions holding color codes.
3944
3945misc.c         added ignore and debug commands, debug won't do an aweful lot
3946               as of yet though.
3947
3948variable.c     figured I should add some more color support, so added a way
3949               to format tintin color names, using #format %c {name}
3950
3951variable.c     #format again, %h will create a tintin header line.
3952
3953variable.c     fixed how variable assignment was being dealt with in triggers,
3954               can now change and display variables correctly on the fly.
3955
3956rlhist.c       changed command repeation behavior.
3957
3958rlhist.c       removed the history command, no longer needed to look up the
3959               index, just a working short memory.
3960
3961config.c       added repeat on enter option in config.
3962
3963parse.c        the command part of a line received by parse input
3964               has vars and functions substituted right away.
3965
3966               If passing a command to another session the functions and
3967               variables are substituted as well, setting the values of
3968               the controlling session.
3969
3970math.c         Added the tintoi and tincmp functions, which are enhanced
3971               versions of atoi and strcmp.
3972
3973net.c          Added some code to stop enters being written to the scrollback
3974               buffer, useful for people using #cr to bust a prompt.
3975
3976rl.c           Got rid of the prompt saving stuff, now using brute force,
3977               refresh the prompt everytime the screen is updated. This to
3978               work around a bug in readline that gives odd behavior with
3979               cursor movement.
3980
3981
3982March 2004     1.89.0
3983-------------------------------------------------------------------------------
3984
3985math.c         Added a close to complete mathematical expression routine.
3986               Needs some work still but it works. Also allows for comparing
3987               strings <= >= == != if you enclose the strings in " ". It's
3988               quite a bit better than the old one, though it's not supporting
3989               T, F, and '!' since it's string based, shouldn't be too hard
3990               adding some better string support.
3991
3992ivars.c        stripped all the stuff that is now covered by math.c or
3993               variables.c only leaving #ifexits. And then it occured to me
3994               that #if {"$variable" != "$*"} {true} {false} would
3995               very well replace the 'ifexits' check. So ivars.c is no more.
3996
3997data.c         deletenode_list now properly keeps track of a global update
3998               node. Can only use one noderoot->update per program state.
3999
4000session.c      cleanup_session now properly keeps track of a global update
4001               node. Can only use one gtd->update per program state.
4002
4003rl.c           fixed up the split screen behavior, should be a stable prompt
4004               and correct text presentation in split mode now.
4005
4006
4007February 2004  1.88.0
4008-------------------------------------------------------------------------------
4009net.c          added telopt negotiations in net.c for naws, terminal type,
4010               and mccp (version 2)
4011
4012tintin.h       added the zlib library and a session buffer for mccp
4013
4014tintin.h       added a 64KB output buffer, I'll just asume that the mud
4015               output contains a linefeed before BUFFER_SIZE is reached. This
4016               should make output processing a bit smoother, and saves me
4017               from fiddling too much with chopped up data.
4018
4019rl.c           added the tintin_printf and tintin_printf2 functions which
4020               format the argument list and pass the data on to tintin_puts
4021               or tintin_puts2
4022
4023tintin.h       changed the node list struct to work with a head/tail pointer,
4024               and turned it into a double linked list, updated all .c files
4025               affected by this change.
4026
4027*.c            cleaned up the code, using tabs instead of spaces and aligning
4028               the brackets.
4029
4030main.c         switched from rand to rand48, it's seeded once upon startup
4031               which is sufficient.
4032
4033main.c         added a global tintin session (gts) the idea is to get rid of
4034               most global variables.
4035
4036tintin.h       added a bitvector to the session structure which will contain
4037               all session flags, various changes throughout the code changing
4038               global variables into flags.
4039
4040rl.c           fixed up the cursor positioning for split mode and fixed the
4041               linewrap routine which was off by 1 character, resulting in
4042               extra lines on a perfect match.
4043               added a special flag for mud output for split mode, to avoid
4044               color loss when restoring the cursor (which also restores the
4045               cursor color, hence the color loss)
4046
4047tables.c       new c file, which will contain some tables, the current setup
4048               is a bit tedious.
4049
4050tintin.h       moved all header files into tintin.h cause the old setup with
4051               40 headerfiles was giving me a headache (literally).
4052               Grouped it into typedefs, globals, constants, macros,
4053               structures and functions
4054
4055tintin.h       changed all commands to use the COMMAND typedef, as well as
4056               all commands now use universal arguments and naming, this to
4057               make a command table.
4058
4059*.c            There's always a session now, with a few checks for gts (global
4060               tintin session) which cannot send or receive data. Passing
4061               session data along with a couple of functions which should
4062               make background sessions less spammy.
4063
4064strhash.c      Added a simple string hash routines which I'll be using for a
4065               scroll back buffer. It uses a bit of memory, but should save a
4066               lot more for big scroll back buffers.
4067
4068main.c         changed tstphandler to call kill with a null pid, otherwise it
4069               wouldn't work when tintin was started from a script
4070
4071ivars.c        removed backwards compatibility for fixedmath
4072
4073buffer.c       scroll back buffer and a grep command added
4074
4075rl.c           made the init_readline function actually initilize readline,
4076               added 4 default keybinds for the scrollback buffer.
4077
4078tintin.h       added a keymap to the tintin_data structure, which will be
4079               used for keybinding.
4080
4081text.c         got rid of the linewrapper in rl.c and added a word wrap
4082               routine instead.
4083
4084log.c          all vt102 codes cept the linefeed are stripped for logged data,
4085               the lowlog thingie can still be used.
4086
4087chat.c         Removed this entirely, it's a mess and there are many stand
4088               alone p2p chat programs available.
4089
4090*.c            moved some more global data to the session and data structures
4091
4092rltick.c       removed entirely
4093
4094ticks.c        removed entirely
4095
4096tick.c         wrote a new ticker from scratch, uses alarm(1) to sleep 1
4097               second, the user can now define a list of tickers, pretty much
4098               like aliasses, they'll trigger when the timer expires. Added
4099               the 'tick' and 'untick' command for manipulation.
4100
4101macro.c        added 'macro' and 'unmacro' commands for keybinding, I couldn't
4102               figure out how to actually undo the real macro's though
4103               without using a messy hack, so I just skipped that till later
4104               for now.
4105
4106session.c      Got rid of the zombi code, will try to add a better connection
4107               handler at a later data, but the zombi code is not the answer.
4108
4109tintin.h       Changed architecture further turning the lists from individual
4110               lists into an array of lists. Added an array in tables.c for
4111               additional data.
4112
4113substitute.c   Changed the default #gag char from '.' to character 255, this
4114               to prevent weird behavior when a dot is displayed on an empty
4115               line for any kind of reason.
4116
4117config.c       Added a configuration menu, defaults are loaded upon startup.
4118
4119walk.c         Removed, didn't really look into it deeply, but I adjusted
4120               path.c to allow user progged walking using a ticker.
4121
4122parse.c        Added 2 action checkers, first one checks priority 0 to 4,
4123               after that substitutions are checked, priority 5 to 9 is
4124               checked after substitutions.
4125
4126parse.c        do_one_line now strips colors per default before passing the
4127               text on to check_one_action
4128
4129action.c       rewrote the %0 - %9 check_one_action regexp routine, it's
4130               a bit cleaner and slightly faster now.
4131
4132action.c       rewrote substitute_vars, ';' is changed to : per default
4133
4134variable.c     rewrote subsitute_myvariables, no longer supporting $number
4135               variables. ';' is stripped per default. This also easily
4136               allows a change so variables can contain numbers.
4137
4138variable.c     #format {variable} {format} {arguments}
4139               This allows string formatting, numbers are not supported.
4140               Added a format parser for further functionality, for now %l
4141               will lowercase, %u will upper, and %r will reverse the
4142               argument given. There's a maximum of 10 arguments.
4143
4144variable.c     Due to the format command, prepad, postpad, tolower, and
4145               toupper are no longer required, so I removed the commands.
4146               I realise this generates a backward compatibility issue, but
4147               it's easier to find the new commands without 70 old commands
4148               spamming the help files and command lists.
4149
4150split.c        moved the split screen stuff from rl.c to this new file, and
4151               placed the prompt commands/routines there as well.
4152
4153January 2004   1.87.0
4154------------------------------------------------------------------------------
4155               After getting tired of seeing my favorite mud client being
4156               trashed on TMC or simply not having the required functionality
4157               that is expected nowadays to be worth mentioning, I figured it
4158               was time to see what I could do. So I downloaded the latest
4159               official tintin++ release v1.86b and started an evaluation.
4160
4161               It didn't take long to find out the main problems. Over
4162               functionality, inconsistant command syntax, total chaos,
4163               anarchistic implementation views, all in all enough to end up
4164               deleting about 33% of the code, and rewriting over 50% of what
4165               remained. Halfways during that process I ran into Bill on the
4166               wintin forum and I promptly asked him permission to release an
4167               official tintin++ derivative. And it was agreed that I could,
4168               if he liked what I came up with. To make a long story short, I
4169               finished a beta version several weeks later and got Bill's
4170               permission to name it tintin++.
4171
4172               The next step was getting permission for the manual, I googled
4173               up a notification from the authors which said the manual had
4174               been GPL'ed, see tintin15.cr, last issue fixed.
4175
4176August 2001    tintin15.cr
4177------------------------------------------------------------------------------
4178
4179This package was debianized by Jordi Mallach <jordi@debian.org> on
4180Wed, 22 Aug 2001 03:23:36 +0200.
4181
4182It was downloaded from http://mail.newclear.net/tintin/archive.htm.
4183
4184Upstream Authors: Davin Chan <davinchan@earthlink.net>
4185                  Robert Ellsworth <rse@newclear.net>
4186        See the CREDITS document for the full list of contributors.
4187
4188
4189Copyright:
4190
4191Tintin++ was relicensed under the GNU General Public License on
4192July 12th, 2001, when version 1.86 was released. The full text
4193of the GNU GPL can be found in /usr/share/common-licenses/GPL on
4194Debian systems.
4195
4196Additionally, the Tintin++ manual was placed under the GPL at my request
4197by Robert Ellsworth, it's author. The following is the mail in which he
4198granted me permission to publish it under the new license:
4199
4200> From: "Robert Ellsworth" <rellsworth@wattsup.com>
4201> Subject: RE: Tintin install mess
4202> To: "'Davin Chan'" <davinchan@earthlink.com>,
4203>         "'Jordi Mallach'" <jordi@sindominio.net>
4204> Date: Tue, 28 Aug 2001 09:53:50 -0400
4205> In-Reply-To: <3B8AF5A5.557E35E0@earthlink.com>
4206> X-Mailer: Microsoft Outlook, Build 10.0.2627
4207>
4208> Well,
4209>
4210> RE #1) Well, being that I am the author, then yes, I have no problem
4211> with the changing of the manual to GPL. :-)
4212