The following is a non complete list of updates of the patch that gives a somewhat fancy thread interface. This patch is strongly based in the patch that collapsed related subjects which I developed some time ago. In the same way that "Pine is Not Elm", "Thread is not Kolapse". All the old code is disappearing, and getting rewritten, which is really nice :).

February 24, 2008 Alpine 1.00 (snapshot 934)
  • Fixed a bug that can make Alpine crash when a message is expunged from a folder.
October 29, 2006 Pine 4.64
  • Added the score key or sorting threads. Threads are sorted according to the message with the largest score in that thread.
July 27, 2004 Pine 4.61
  • The sort-key= reverse thread was not being respected, so the patch was modified in such a way that if either one of sort-key or thread-sort-key is reversed, then the sort will be reversed, except when both are reversed, in which case the sort will not be reversed.
July 11, 2004 Pine 4.60
  • Support in thread-sort-key only for arrival and thread. It used to be that more sort options were listed but were not active, now only active options are listed.
July 09, 2004 Pine 4.60
  • Fix a bug which would make Pine fail to sort by the default thread sort key when one sorted by thread using the "$" command. Reported by Heinrik Edlund.
May 23, 2004 Pine 4.60
  • Fix a bug which made Pine expand all threads when a message from a folder was expunged (this was due to the fact that there's code in Pine that would erase the threading information, which is now avoided). Reported by Radu Cornea.
  • Fix a bug which made Pine expand loose threads when a message was expunged. This was due to the fact that I was not saving collapsed information in the right way (with the MN_COLL flag).
November 10, 2003 Pine 4.58
  • Fix a bug which made Pine not to show the collapsed character indicator when some branches of a thread were collapsed.
May 12, 2003 Pine 4.55
  • Fix a bug which made Pine remember the last method of sorting threads (for example, it would keep sorting threads by reverse order if done once).
April 10, 2003 Pine 4.53
  • Fix a bug which made Pine crash. The bug happened when a folder that was sorted by thread (say INBOX) lost its lock making Pine resort that folder when opening it again. In this case Pine tried to relink the threads but it failed and crashed.
February 23, 2003 Pine 4.53
  • Fix a bug which made that Pine would split threads in newsgroups when a message was expunged from the newsgroup.
December 13, 2002 Pine 4.50
  • Fix a bug produced by the fact that Pine removes a key from the index when you are in the THREAD INDEX screen. I had moved the command to another location, making it available when it was not supposed to be available. Reported by Ken Scott.
  • Fix a bug that made Pine crash when expunging messages from a collaped folder, and no messages were left in the folder after the expunge. Reported by Clemens Oertel and Nico Behrens
December 08, 2002 Pine 4.50
  • Fixed bugs that made Pine not place the cursor at the right position when some messages were expunged, could make Pine hide the subject when threads were collapsed (h->plus = 0) and could make Pine crash when determining the index of a collpased thread (in function to_us_symbol_for_thread).
December 06, 2002 Pine 4.50
  • Patch updated for version 4.50 :).
July 12, 2002 Pine 4.44
  • Crashing bug. A spam message was making Pine crash when build with gcc-2.95-3 (cygwin). The bug was solved by changing "sprintf" to "strcpy". Reported by Joel Boonstra.
May 29, 2002 Pine 4.44
  • Bug: Memory for the msgmap variable was not being resized when new mail arrived, nor freed when not needed anymore. Fixed this. This error took a while to be caught, and is the reason why so many fixes have ocurred the last few weeks. Fixed based on a report by Ajay Simha.
May 21, 2002 Pine 4.44
  • Fixes a few crashes when one intended to apply thread commands on empty folders.
  • Trying to clean the code of assignments of int in variables of type long.
May 15, 2002 Pine 4.44
  • A crashing bug was eliminated. This had to do with a string not terminated in a null character in the function do_fancy_formatting. The real problem was not that, but the fact that Pine was being misled to execute the code under "if (fancy == 0)" in that function, when it needed to skip it. This required to solve a problem in the function build_header_line when the FromOrTo part of the code was executed.
May 14, 2002 Pine 4.44
  • Another crashing bug was found. It is produced when a folder contains only one message. When the folder is opened the msgmap is not found, which makes Pine crash if certain operations are done on the folder (e.g collapsing). The solution was to change the function empty_branch so that it always returns that we need to sort such a folder.
  • Add code that forces the computation of the msgmap when new mail arrives. This code is temporary (but as any temporary thing, it may become definitive). This was added in the function update_new_mail_index in newmail.c
May 07, 2002 Pine 4.44
  • There are some changes in the code. The most natural was the transformation from variables that were type int to type long. This leaves variables that contain information about the number of a message, of type long.
  • Change in the code of arrival of newmail. Sorting INBOX is deferred until INBOX is opened again, when new mail has arrived while we are not in INBOX.
  • Fix a bug that made Pine crash when the last thread of the index was collapsed and one unexcluded messages. The crash was due to the fact that a counter was not bounded by the total number of messages in the folder. See the functions total_length_thread and get_length_branch in mailindx.c
  • Add thread-character to the patch, so that people who want to change the default backslash "\" to something different, can do so.
April 29, 2002 Pine 4.44
  • There was an instance of expunging that made that Pine did not find the cursor position, which made the cursor disappear from the screen. For example, if one collapses, and deletes the first message of a thread, and finally expunges that message. This was solved by adding a call to find_crsr_pstn in the expunge algorithm (function process_cmd), around line 749 in file pine4.44/pine/mailcmd.c.
April 26, 2002 Pine 4.44
  • Another crash related to the last modification about adding more complete references header support. This one happened when one attempted to post a reply to a message in a newsgroup. See about line 4466 in file pine4.44/pine/send.c.
April 23, 2002 Pine 4.44
  • Pine crashed when one postponed a message that was being replied to. This was due to the fact that Pine contained code that made it write the references header when one postponed a message. This code was not needed anymore, and keeping it made Pine crash, so it just had to be removed (See pine4.44/pine/send.c around line 4177). Reported by Martin Devera
  • Somehow the recomputation of the msgmap structure after expunging and unexcluding, was removed from its position in the index_thread function. Now it was brought back to its original position.
April 09, 2002 Pine 4.44
  • Pine will generate the References header. This will make threads look much better in your INBOX (hopefully!).
February 6, 2002 Pine 4.44
  • A bug which made Pine crash when only one thread existed in the folder and one tried to go to the previous thread using the ( command was fixed.
January 16, 2002 Pine 4.44
  • A bug which made Pine crash when all messages of a folder in index-thread mode where deleted and expunged was fixed.
  • A bug which made Pine not recompute the index screen when "k" was pressed to exit the index-thread screen and return to normal mode was fixed.
January 10, 2002 Pine 4.44
  • New Commands: Now there are two new commands, they are ) and (. They are used to move the cursor to the next or to the previous thread.
January 09, 2002 Pine 4.44
  • Patch updated for version 4.44
  • Patch was modified in such a way that it should apply without failure if the "automatic check for incoming folders" patch is also applied.
January 04, 2002 Pine 4.43
  • Fix a bug in the just released patch that made Pine not sort by thread when the folder was sorted by reverse sort. This bug did not affect threading, it just only gave a message that was not right. Reported by David A. Desrosiers
  • Add the ability to sort threads by reverse order.
January 02, 2002 Pine 4.43
  • Fix bug that made Pine fail in the cycle: "k k $ a k". The problem was that the msgmap was not found in the last "kolapse".
  • Add new feature. Now one can sort threads in other ways. The default is that threads are sorted by "Date". Now you can sort threads by "Arrival" or by "Subject". Other methods have not been defined yet.
December 27, 2001 Pine 4.43
  • Selecting all messages will unhide all messages.
  • When new mail arrives in INBOX, we have another folder opened and the index of INBOX is collapsed, new mail (in INBOX) in new threads, may not appear in the index when opening INBOX again. This is fixed by creating the variable ps_global->inbox_kolapse and giving new parameters to the functions "thread_is_hidden" and "find_msgmap". Also for economy, we created a new function which will determine if we need to add (and how) the new message to the collapsed index. Notice that this requires to sort INBOX!.
December 26, 2001 Pine 4.43
  • Ok, I take it back. Sort by thread will give the "Sorting" message, but when pressing "k" will give the "Threading" message. This is more consistent and fixes all problems we had before.
December 24, 2001 Pine 4.43
  • Fix a small bug. Sort by thread (not fancy thread) was not working exactly as it should, unless you threaded, so now the behavior is the following: Whenever you sort by thread you will see the [Threading "folder_name" ] message. What this means is that it is also computing the thread information, regardless of if you see a fancy thread interface or not.
December 21, 2001 Pine 4.43
  • First day of Winter (or Summer if you prefer), enjoy!.
  • There was a bug in the expunge algorithm, which happened when all selected messages were collapsed, marked deleted and expunged. The cursor was not set in any message. Bad, bad. Anyway, now it's fixed. Reported by Joel Boonstra.
December 20, 2001 Pine 4.43
  • Another improvement in the algorithm, which makes Pine fill the relevant part for threading of the msgmap structure immediately when sorting by thread.
  • Based on a suggestion by Joel Boonstra, a new configuration option has been added. The feature is called force-local-threading and it forces Pine to ignore the way that the server reports the threads, and forces Pine to compute them. Given that this may consume more resources than necessary, it is a hidden feature, and one way to activate it, is by manually adding it to your .pinerc file, under feature-list (but it is highly discouraged to do so).
December 19, 2001 Pine 4.43
  • Attempt to fix a bug that appears in (IMAP)STATUSTHREAD, which happens when an index is collapsed and in many cases this means that messages that were not in the screen are brought to the screen. In particular the hidden messages under that thread do not have a MESSAGECACHE with valid flags, and this makes that the reporting of (IMAP)STATUSTHREAD will be incomplete. The bug is fixed, but I may think of another way to fix it, since I do not like the way is being fixed right now.
December 18, 2001 Pine 4.43
  • A new enhancement was done which makes Pine save some memory when computing the msgmap variable. The change consist in representing messages which are top of a thread with negative size_excluded (length of branch). This eliminates the variable top_thread.
  • A few defined constants that defined key names were deleted. This will make the patch shorter and easier to apply with other patches.
December 13, 2001 Pine 4.43
  • A new enhancement to the expunge algorithm, which will make expunging more transparent. The point was, what happens if a folder is expunged and some messages that are in a collapsed thread are hidden, but the parent is deleted?. For that case, the (new) parent of the thread will be shown, but not necessarily the rest of the hidden messages.
December 12, 2001 Pine 4.43
  • Now STATUSTHREAD and IMAPSTATUSTHREAD, will report "u" if and only if there's no New message in the thread/branch, otherwise it will report "n" for the status if there's a new message or won't do anything as usual if nothing is found.
  • If we are in threaded mode and a new message arrives, sometimes Pine did not write an entry in the index in the screen for the new message. This happens when some thread is collapsed. Now Pine will write an entry in the screen if the following conditions are true:
    1. The new message is the parent of a new thread.
    2. OR the new message belongs to a thread that is not collapsed
    3. AND the index has not been zoomed with selected messages.
    Pine never used to show a new message when a message was selected and the index was zoomed, this emulates the old behavior in threaded mode.
December 11, 2001 Pine 4.43
  • Fix a small bug where the count of the number of messages under a branch was not correctly computed. This bug was introduced in the latest release, and it is due to the fact that we need to count messages in top of the thread which sometimes are in level 1 (are parents of the thread), or sometimes are in level 2 (the parent is missing). This complicates matters, and that's where the bug comes from.
  • Ouch! a crashing bug was found when pressing ^D while reading a message and we were not in the threaded screen (the one you get after pressing "k"). Reported by Lenz Grimmer.
  • Based on a suggestion by Catalin Marinas, an order in which a condition in function get_indent_str is tested, was changed. This prevents Pine from crashing in the event that new mail arrive, while a thread is being expanded.
December 10, 2001 Pine 4.43
  • now threads without a parent will be put under the same thread. This behavior is not configurable yet, which means that in a later version it will be. Threads that are missing a parent contain the bigger than sign (>) in the indent string of the thread.
  • Based on a suggestion by Lenz Grimmer, now a few commands that were only available in the index-screen can be executed when you are reading a message, so for example, you can delete a thread while reading a message of it.
  • Fixed a bug, which I introduced in the last release, which made Pine delete its msgmap while in threaded screen and new mail arrived. This was a feature of the patch in the first release, but I made a change in the second release which introduced this bug. Now it is fixed.
  • Based on a comment by Simon L. Epsteyn, now the last thread and its last message will be indented with the "\" character.
December 06, 2001 Pine 4.43
  • Fix a bug, which kept the index in IMAPSTATUSTHREAD when a thread was selected, also some improvements.
  • Pressing ^D to delete a thread now will cause the cursor to advance to the next thread (visible message that is not deleted) if the configuration option delete-skips-deleted is enabled. Suggested by Catalin Marinas
  • A few other improvements (find_msgmap behaves like a mini sort_folder function). It remains to extend this function to support other sort orders related to this screen. Any volunteers?
  • We got rid of the variable privmsgmap, it was not needed anymore. One less thing to worry about :).
  • There was a bug in the allocation of memory, which was detected in a Solaris 2.8 machine using gcc 2.95.3 and gcc 3.0.2. This bug made Pine crash, and the changes described in the above item solved this problem. I would like to thank Danny Chapman for having tested and reported this problem. He also linked Pine with Purify, and that helped to identify the bug. I would also like to thank Jonas Bygdén, who was very kind to also report the bug to me, and test the new changes, which resulted in the bug being fixed. Wow, this is great!
December 04, 2001 Pine 4.43
  • A new configuration option that allows users to enter to the fancy screen, when this is sorted by thread, automatically was added. Suggested by Ryan Dlugosz
  • Fix a bug which made pine crash. Pine needed the msgmap in IMAPSTATUSTHREAD and it was using a wrong one. Now format_index_line contains a way to select the msgmap which will use, which is consistent all the way. This made Pine crash when one continued a postponed message. (The funny part of this story is that the postponed message that I was going to continue was the announcement about the patch in comp.mail.pine).
December 03 2001 Pine 4.43
  • Patch Released.
  • A compilation error was reported by James Stewart