2002-02-06  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/text.c (set_text_from_article_nolock): fix bug that caused
	"show all headers" to not display mime headers.

2002-02-05  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (set_group_mainthread_end): fixed small 0.11.1
	memory leak.  This doesn't break the string freeze.

	(Tweaks)

	* pan/gui.c: small speedup.  Doesn't break string freeze.
	* pan/base/serverlist.c: ditto.

	* pan/base/server.c: use a GMime MemChunk instead of a GMemChunk
	for creating Group objects.

2002-02-03  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/group.c: broke the string freeze after only a few hours
	with this showstopper bugfix.  Sorry about that; no further changes
	planned. (70457)

2002-02-03  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/message-window.c: call strsplit_command_line_arguments()
	instead of g_strsplit() to ensure that quoted arguments are
	grouped together properly.  This fixes a problem with the external
	editor not working properly.
	* pan/base/pan-glib-extensions: added strsplit_command_line_arguments.

	(UI Tweaks)

	* pan/prefs.c: updated the list of external web browsers and
	external editors.

2002-02-01  Christophe Lambin <clambin@easynet.be>

	Pan 0.11.1.94 Released!
	
2002-01-31  Christophe Lambin <clambin@easynet.be>

	(Build Fixes)

	* pan/articlelist.c (articlelist_read_selected): build fix for
	yesterday's commit.
	* pan/gui.c (gui_page_activate_nolock): same.

2002-01-30  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/text.c (text_realize_cb): don't show the welcome message if
	an article has already been downloaded.  This keeps the welcome
	message from popping up over the first article for users who live
	in zoom mode.  Thanks to Stefan Van Theemsche and
	Douglas Bollinger for reporting this bug.

	* pan/gui.c (gui_queue_add): created a FIFO queue for processing
	async gui updates in the main thread.  Unlike run_in_main_thread(),
	which is replaced by this function, gui_queue_add() doesn't require
	a gdk lock.  Thanks to Gabi Davar for reporting the bug that led to
	this function being written.
	* pan/util.c (run_in_main_thread_nolock): removed obsolete function.
	* pan/grouplist.c:
	* pan/articlelist.c:
	* pan/status-item-view.c:
	* pan/text.c: sync.

	* pan/text.c: listen for group_emptied signals so that the text pane
	can call set_article(NULL) if the group that the curent article
	belongs to is cleared.  Thanks to Jean Ribiere for reporting this bug.

2002-01-29  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/util-file.c: Pan now handles '~' characters in
	the TMPDIR variable when creating temporary files.
	Thanks to Jukka Salmi for suggesting this change.
	* pan/message-window.c: same.

2002-01-28  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (group_articles_removed_cb): fixed 0.10.0.93
	bug that caused the GUI to sometimes lock up when pulling down
	new headers.

2002-01-28  Christophe Lambin <clambin@easynet.be>

	Pan 0.11.1.93 Released!

2002-01-27  Charles Kerr <charles@rebelbase.com>

	(UI Tweak)

	* pan/articlelist.c:  leave the "delete all" button enabled
	even if no articles are selected.
	* pan/gui.c: same.

2002-01-24  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (articlelist_articles_removed_cb): defer the
	"group == my_group" check to the mainthread function.  This is
	to settle contention with anything in the mainthread which could
	be changing the value of my_group.

2002-01-23  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/text.c: make sure an article is marked as read when it's read.
	Previously this was done in task-body, which is no longer called when
	the article is already cached.  Thanks to Tivo Leedjrv and
	Adrian von Bidder for reporting this bug.
	* pan/task-body.c: don't mark the article as read here; it's now
	done in pan/text.c as described above.

2002-01-22  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/queue.c (queue_run_thread): if a task fails, delete the socket
	connected with it, instead of reusing it, because the readbuf on that
	socket could be in a corrupted state.  This should fix some of the
	corrupted connection bugs reported recently (but is hard to test :(

	* pan/util.c (pan_lock_from): A handful of functions called from _idle
	funcs had been calling pan_lock() instead of pan_lock_unconditional(),
	so they were making gtk+ updates without a gtk+ lock.  Having the
	caller track which function to call is too error-prone, so pan_lock()'s
	been changed to handle all callers properly. 

2002-01-21  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (articlelist_selection_changed_cb): added
	call to article_is_valid().  The previous sanity check would
	crash if the article was invalid.  See next bug.

	* pan/articlelist.c (articlelist_select_row_cb): add a
	group_ref_articles() before delegating to the main thread.
	Matching unref added to articlelist_select_row_idle.
	This fixes the "why was the article invalid in the first place"
	of the bug mentioned above.

	(UI Tweaks)

	* pan/filter-edit-ui.c (filter_edit_dialog_new): more gui work
	based on user feedback.

2002-01-21  Christophe Lambin <clambin@easynet.be>

	(Housekeeping)

	* configure.in: Bump version number to 0.11.1.92 to sync w/ tarball.

	(Bug Fixes)

	* pan/base/util-wrap.c (fill_body): silence an assertion failure
	when an article doesn't contain any text (other than the sig).

2002-01-20  Charles Kerr <charles@rebelbase.com>

	(GConf / gnome_config?)

	* pan/base/pan-config: new module that is currently just a thin
	wrapper around gnome_config.  This will get #ifdeffed in the future
	to add some basic functionality for a Windows build of Pan.

2002-01-20  Christophe Lambin <clambin@easynet.be>

	Pan 0.11.1.92 Released!

2002-01-20  Christophe Lambin <clambin@easynet.be>

	(UI Tweaks)

	* pan/filter-edit-ui.c (filter_edit_dialog_new): new layout to fit
	the 'Edit Filter' dialog in 800x600.

	(Bug Fixes)

	* pan/gui-headers.c (get_and_add_header_nolock): make sure to 
	decode 8bit-encoded headers before displaying them.

2002-01-19  Charles Kerr <charles@rebelbase.com>

	(Bug Fix)

	* pan/sockets.c (pan_socket_constructor): point SIGPIPE to SIG_IGN
	when each socket is constructed.  Calling just once at the start
	of the program reportedly doesn't stick in a pthreaded application.
	Thanks to Alen Williams for reporting this bug.

2002-01-18  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/group.c: added _deleted_articles field.  When
	an article is removed from a group, it's added to this list
	so that we can be sure to call the article_destructor when
	the group's article refcount goes to zero.  This fixes a fairly
	big memory leak.

	* pan/group.c (group_add_articles_remove_unused_impl): call
	the article destructor for each article that we're not keeping.
	This fixes a related memory leak.

	(Tweaks)

	* pan/base/util-wrap.c (rot13): rot13 inplace, instead of
	allocating a new string, to avoid an unnecessary
	malloc/free.

	* pan/base/gnksa.c:
	* pan/base/util-file.c:
	* pan/base/file-grouplist.c:
	* pan/articlelist.c: use a local buffer and g_snprintf for
	strings that we know will be small.  This is more anal-useless
	avoidance of malloc/free calls.

	* pan/base/article.c (articles_remove_flag):
	* pan/base/article.c (articles_add_flag): check to see which
	articles already had the flag so that fire_articles_changed()
	will only fire the articles that actually changes.

	* pan/base/article.c (article_has_body): small speed tweak.

2002-01-17  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/nntp.c (nntp_article_download_to_gstr): fix 0.11.1.91 bug
	that caused the zero termination to not get saved at the end of
	the acache file.

2002-01-17  Christophe Lambin <clambin@easynet.be>

	(UI Tweaks)

	* pan/articlelist.c: added 'read selected article' back to the
	thread list's popup menu.

2002-01-17  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/nntp.c (nntp_download_headers): fixed stupid bug that
	caused the crosspost header to not be saved.

	* pan/base/util-file.c (read_file): ensure that the file string
	is zero-terminated.  This fixes a bug that caused Pan to crash
	when decoding files. Thanks to Alen Williams for reporting this
	bug.

	* pan/base/group.c (group_mark_all_read): delgate the mark-read
	code out to articles_mark_read().  This fixes a bug that caused
	the "Mark Group as Read" menu button to not also mark crossposts
	as read.  As a side-effect of this change, the "group marked read"
	callback is no longer needed.

	(Housekeeping)

	* pan/articlelist.c (articlelist_group_marked_read_cb):
	* pan/base/group.c (group_get_group_marked_read_callback):
	* pan/base/group.c (fire_group_marked_read): removed unused function.

	(Attachments)

	* pan/message-window.c: more love to the attachments tab.
	It now shows what the estimated file size will be for base64,
	uuenc, and yenc.

2002-01-15  Charles Kerr <charles@rebelbase.com>

	(Attachments)

	* pan/message-window.c: Posting Attachments, part one:  this is
	how I'd like the attachments tab to look and behave.  It's all
	#ifdeffed out for now so as not to spoil 0.11.2.  Uncomment
	ATTACHMENTS on line 60 to try it out.

2002-01-15  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (map_articlelist_cb): fixed 0.11.1.91 gui double
	lock bug.  Thanks to Douglas Bollinger for reporting this bug.

	(Tweaks)

	* pan/base/group.c (group_isolate_article): remove unused function.
	This used to be a poor-man's resync'ing for when articles were
	removed from a group.  However now that we call thread_articles()
	each time articles are removed, this is no longer necessary.

2002-01-15  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/prefs.c: removed the 'max. connections' from the 'Edit Server'
	dialog, since it's also available in the Online Settings' pane
	(which has a nicer UI :)). This fixes some inconsistent behaviour. 
	Thanks to Joseph Turian for reporting this.
	
	(Code Cleanup)

	* pan/prefs.[ch]: extra_posting_headers is obsolete.
	* pan/message-window.c (populate_post_info_pane): same.

2002-01-15  Charles Kerr <charles@rebelbase.com>

	(Bug Fix: grouplists being saved on load)

	* pan/base/file-grouplist.c: call server_init_groups() instead of
	server_add_groups().
	* pan/base/server.c (server_init_groups): new function like
	server_add_groups() that doesn't set the grouplist dirty flag.
	* pan/base/server.c (server_add_groups_impl): new function that
	now has most of the code that used to be in server_add_groups().
	server_add_groups() and server_init_groups() wrap around this.

        (Expand Threads by Default)

	* pan/prefs.h:
	* pan/prefs.c:
	* pan/articlelist.c: applied Bas Mevissen's patch to add this feature.

	(Tweaks)

	* pan/save-ui.c (save_attachment_as_dialog_clicked_cb): if the user
	specified a ~ in the save directory, replace the tilde with the
	user's home directory.

	* pan/prefs.c:
	* pan/base/gnksa.c:
	* pan/base/acache.c:
	* pan/task-manager.c:
	* pan/base/pan-glib-extensions.c:
	* pan/message-window.c: use g_snprintf instead of sprintf just to
	make the flawfinder tool's buffer overflow checker happy.

2002-01-14  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/nntp.c: Fixed obscure authentication bug introduced by
        0.11.1.90's SPA support.  Thanks to Avtar Marwaha for reporting
	this bug and to Marc Prud'hommeaux for providing this patch.

	(Housekeeping)

	* tests/test-gnksa.c: added a new regression test (which passes)
	to test a bug report that was sent in recently.

2002-01-14  Charles Kerr <charles@rebelbase.com>

	Pan 0.11.1.91 Released!

2002-01-13  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/gui.c (gui_set_page): defer this to a gui_set_page_idle func.
	This function can be (and is) called from outside the main thread.
	This was the cause of at least one "Xlib: async reply!" bug in
	0.11.1.90.

	* pan/gui.c (status_item_active_changed_cb): make sure the calls to
	run_in_main_thread_nolock() are wrapped in calls to pan_lock() and
	pan_unlock().  This is important because this is most often called
	from queue_run_thread(), which executes outside of the main thread.

	(Tweaks)

	* pan/base/article.c (article_xref_foreach): use alloca instead of
	g_strdup() to try to avoid avoidable heap memory management.

	(Code Cleanup)

	* pan/articlelist.c: made more variables const where possible.

	* pan/articlelist.c (articlelist_selection_changed_cb): removed
	redundant gui_page_set (MESSAGE_PAGE).  The page is set in text.c
	when the article is done downloading.

2002-01-12  Charles Kerr <charles@rebelbase.com>

	(Code Cleanup)

	* pan/articlelist.c: made some arguments const where possible.

	* pan/base/file-headers.c: removed the "Hello CVS Users!" error
	message; Chris' fix last week seems to have fixed this bug
	for good.

	* pan/articlelist.c: don't update the unread_children and
	new_children fields anymore; it's done in group_mark_all_read.
	* pan/base/group.c (group_mark_all_read): update the articles'
	unread_children and new_children fields appropriately when this
	is called.

2002-01-10  Charles Kerr <charles@rebelbase.com>

        (Bug Fix)

	* pan/base/article.c (articles_mark_read): when a set of articles are
	marked as read, then update the parents' "unread_children" field.
	This step was still tied to the GUI as a leftover from the days of
	Pan where the model and UI were lumped together.  This 'fixes' a race
	condition between model threads and the GUI main thread.
	* pan/base/article.c (articles_mark_new): same.
	* pan/articlelist.c (articlelist_unread_inc_nolock): increment code
	moved to articles_mark_read() (see above).
	* pan/articlelist.c (articlelist_new_inc_nolock): increment code
	moved to articles_mark_new() (see above).

	(Code Cleanup)

	* pan/base/group.c: now whenever a group has articles added to it or
	removed from it, the group is rethreaded s.t. it is always in a correct
	threading state.  When articles are removed, only the relatives of
	the removed articles need rethreading.
       	* pan/base/group.c (group_thread_articles_if_needed): removed.
       	* pan/base/group.h (Group): removed "articles_threading_dirty" field.

2002-01-09  Charles Kerr <charles@rebelbase.com>

	(UI Tweaks)

	* pan/task-save.c: feed all the articles to nntp_download_bodies(),
	since it will skip the ones in the local article cache anyway.  This
	fixes a small UI bug that, when a task was stopped and restarted,
	it would appear to begin again from zero.  Thanks to Ron KA4INM Youvan
	for reporting this.

	* pan/grouplist.c: when the group filter loses focus, activate the
	filter.  This prevents a situation where, when changing the filter
	without pressing enter and move on to another action, the filter isn't
	activated even though the Find: box shows the new filter.  Thanks to
	Jeff Lightfoot for suggesting this change.
	* pan/article-toolbar.c: same.

2002-01-09  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/articlelist.c (articlelist_set_filter_bits_nolock): don't check 
	my_group, since it is only set up on set_group_mainthread_end.
	This prevented the first group loaded from having the correct filter 
	settings applied. Thanks to Douglas Bollinger, Dan Hensley (among
	others) for reporting this.

	* pan/articlelist.c (set_group_mainthread_end): only get new headers
	once the articlelist is fully built.

2002-01-09  Charles Kerr <charles@rebelbase.com>

	(UI Tweaks)

	* pan/grouplist.c: keep the filter string when switching between the
	various view modes. This undoes the change made on 2002-01-05.

	(Housekeeping)

	* pan/gmime/internet-address.c: removed compiler warnings.
	* pan/gmime/gmime-param.c: same.
	* pan/acconfig.h: added #include <alloca.h> if system has alloca.h.

	* gmime/strlib.[ch]: removed gmime's reinvention of ANSI C functions.
	If a platform doesn't have strlen(), then it's just screwed. :)
	Removed: strncat, strcat, strchr, strrchr, strcpy, strncpy, strlen,
	memchr, strstr, strftime, localtime.
	* configure.in: sync.
	* acconfig.h: sync.

	* gmime/strlib.c (strncasecmp): replaced with a call to g_strncasecmp.
	* gmime/strlib.c (strcasecmp): replaced with a call to g_strcasecmp.

2002-01-08  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/base/group.c (group_ref_articles): lock the article_mutex while
	ref'ing the group. This fixes a number of threading issues, among
	which is the 'group->_article == NULL' assertion failure.

	* pan/base/group.[ch] (group_init_articles): non-locking version of 
	group_add_articles_remove_unused(). 

	* pan/base/file-headers.c (file_headers_load_{group|folder}): since 
	these are called from group_ref_articles, call group_init_articles() 
        to prevent a dead-lock.

2002-01-07  Christophe Lambin <clambin@easynet.be>

	Pan 0.11.1.90 Released!

2002-01-05  Christophe Lambin <clambin@easynet.be>

	(UI Tweaks)

	* pan/grouplist.c: clear the filter string when switching between the
	various view modes. Thanks to John LeMay Jr. for suggesting this.

	* pan/text.c (text_button_pressed): double-clicking a URL would open
	up to three browsers if the browser wasn't already running.  Thanks to
	Mart van de Wege for reporting this problem.

2002-01-04  Jeffrey Stedfast  <fejj@ximian.com>

	* gmime/memchunk.c (memchunk_clean): Oops, when tree_search()
	returns 0 we want to prune it, not the other way around :-)

2002-01-03  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/filters/filter-phrase.c (filter_phrase_set): use POSIX Extended 
	Regular Expression syntax, giving us support for operators like '?'.
	Thanks to Chris Petersen for reporting this problem.

2002-01-02  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/base/util-mime.c (look_for_uuencoded_data): Fixed a memory
	leak.

	* pan/message-window.c (populate_post_info_pane): Fixed two unitialised
	pointers that would cause Pan to segfault when posting. Thanks to
	John LeMay Jr. and Frank Van Damme for reporting this problem.

2002-01-02  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/util-mime.c (uu_get_char_len): fix bug that caused the
	wrong character length to be returned.

	* pan/base/util-mime.c (is_uu_len): fix bug that caused lines of
	nntp-server-generated taglines that began with a ' ' character
	to return TRUE.  Thanks to dave at dalrun for reporting this bug.

	(Tests)

	* tests/test-decode.c: added test to make sure that attachements
	with the character  in the filename will be decode properly.

	* tests/data/cache/noisy_*_2.msg: added a leading space in the
	nntp-server-generated taglines as a regression test against the
	decode bug fixed today.

	* pan/base/decode.c:
	* pan/base/acache.c: check the return value of fwrite to see if
	the entire content got written.  Thanks to Andrew May for
	suggesting this.

2002-01-01  Charles Kerr <charles@rebelbase.com>

	(SPA support)

	* pan/auth-spa.c: added support for Microsoft SPA authentication
        so that Pan will work with Microsoft NNTP servers.  Thanks to the
        Samba team for writing SPA authentication code and to
        Marc Prud'hommeaux for patching it into Pan!

2001-12-30  Jeffrey Stedfast  <fejj@ximian.com>

	* gmime/memchunk.c (memchunk_clean): Prune 'cleaned' nodes from
	our free-node list. Thanks to Charles Kerr for discovering this
	bug.

	* gmime/strlib.c (strncasecmp): Moved the return calculation to
	within the loop so as to only take a difference if the strings are
	not identical. This also fixes a bug that would falsely return
	non-zero for strings that were identical for the first n bytes.

2001-12-30  Charles Kerr <charles@rebelbase.com>

	(Bug Fix)

	* pan/queue.c (queue_init): added pthread_mutex_init() call for
	the task_lock mutex.  Thanks to Christian Suder for reporting
	this bug.

	* pan-images.spec.in: removed file.  Thanks to Bas Mevissen for
	reminding me about this.

2001-12-29  Charles Kerr <charles@rebelbase.com>

	(Tweak)

	* pan/sockets.c (socket_constructor): only call sigaction()
	the first time we open a socket; duplicate calls are unnecessary.
	Thanks to Kari Hameenaho for suggesting this.

2001-12-28  Charles Kerr <charles@rebelbase.com>

	(Bug Fix)

	* pan/base/pan-glib-extensions.c (pan_str_unescape): don't crash if
	the input string is NULL.  Thanks to Roger Gregory for reporting
	this bug.

	(Tweak)

	* pan/rules/rule-xml.c (get_attributes): don't add NULL strings
	into the properties hash table; it's unnecessary.

2001-12-28  Christophe Lambin <clambin@easynet.be>

	(Tweaks)

	* pan/identities/identity-xml.c (identity_xml_write): first write
	the profiles to a temp file and then rename to profiles.xml. This
	avoids corrupted profiles as a result of problems during write.
	* pan/filters/filter-xml.c (filter_xml_write): same.
	* pan/rules/rule-xml.c (rule_xml_write): same.

2001-12-28  Charles Kerr <charles@rebelbase.com>

	(Bug Fix)

	* pan/queue.c (queue_run_thread): fixed crash that occurred
	when cancelling some tasks.

2001-12-28  Simos Xenitellis  <simos@hellug.gr>

	* CREDITS: Addition of myself to section TRANSLATION of 0.11.1.   
	* configure.in: Added "el" to ALL_LINGUAS.

2001-12-21  Jeffrey Stedfast  <fejj@ximian.com>

	(GMime)

	* acconfig.h: Include more defines for GMime, hopefully this will
	fix the cvs compile problem some people are having...

	* gmime/memchunk.c (memchunk_clean): Fixed a memory leak.

2001-12-20  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/acache.c (acache_expire_messages): add a mutex lock
	where needed.

	* pan/identities/identity-edit-ui.c (identity_from_identity_tab):
	strip out leading/trailing spaces on names, email addresses, etc.

	* pan/identities/identity-ui.c (edit_dialog_clicked_cb): instead
	of crashing, give a warning dialog if the edited profile is
	incomplete.  Fixes bug 67311.

2001-12-19  Charles Kerr <charles@rebelbase.com>

	(New/Unread/Old)

	* pan/base/group.c (group_mark_all_read): don't bother marking
	articles as old here.

	* pan/base/file-headers.c (file_headers_load_group): if the article
	is read, then turn off the is_new flag.

2001-12-18  Charles Kerr <charles@rebelbase.com>

	(GMime)

	* pan/gmime/*: updated GMime snapshot.

	(Regression Tests)

	* pan/tests/test-filter.c: started filling out the filter tests.

	(Lots More Tweaks)

	* pan/base/acache.c: use gmime's MemChunk instead of GMemChunk.
	* pan/base/file-headers.c: same.
	* pan/base/group.c: same.
	* pan/base/log.c: same.
	* pan/base/server.c: same.

	* pan/base/article.c (article_get_header): renamed
	article_get_extra_header for pulling out unusual headers;
	all the common headers should be fetched directly from 
	the Article struct's fields.

	* pan/base/article.c (article_get_author_str): use an inbuf
	instead of allocating from the heap.

	* pan/base/gnksa.c (is_*_char): avoid strchr calls.

	* pan/base/gnksa.c (gnksa_do_check_from): use an inbuf for the
	address and realname instead of allocating off the heap.

	* pan/base/gnksa.c: use alloca where sensible.

	* pan/status-item-view.c: removed unused field `of_100'.
	
2001-12-18  Christophe Lambin <clambin@easynet.be>

	(Build Fix)

	* po/POTFILES.in: small fix for the moved filter files.

2001-12-17  Charles Kerr <charles@rebelbase.com>

	(Even More Tweaks)

	* pan/articlelist.c (articlelist_get_subject): now takes an inbuf
	to avoid another malloc/free.

	* pan/queue.c (queue_new_todo): use g_new instead of g_new0 because
	we fill in all the fields by hand anyway.
	* pan/queue.c (queue_get_socket_for_task): same.

	* pan/status-item-view.c: make the 'last_status' field a GString
	instead of a gchar*, so that when a new one comes in we can reuse
	the gstring's buffer via g_string_assign(), avoiding a free/malloc.

	* pan/status-item-view.c (string_shorten_nolock): avoid a pile full
	of strlen() calls by keeping track of the length each time we remove
	a character.

	* pan/text.c (make_clickable_parts): for each hardcoded needle,
	also hardcode the strlen() of the needle so that we don't have
	to constantly recalculate it.

2001-12-17  Charles Kerr <charles@rebelbase.com>

	(More Tweaks)

	* pan/base/article-thread.c (thread_articles): Added a GString so
	that we can reuse its buffer in the march-through-references loop.

	* pan/base/group.c (group_alloc_new_article): use g_new instead of
	g_new0, because article_constructor initializes the fields anyway.
	* pan/base/server.c (server_alloc_new_group): same.

	* pan/base/status-item.c (status_item_emit_status_va): since these
	are short fits-in-a-gtkprogress messages, use a stack buffer and
	g_vsnprintf() instead of the more expensive g_strdup_vprintf().
	* pan/base/status-item.c (status_item_emit_error_va): same.

2001-12-17  Charles Kerr <charles@rebelbase.com>

	(Tweaks)

	* pan/base/acache.c (get_file_message_id): remove two strlen calls.

	* pan/base/acache.c (acache_set_message): new argument passes in the
	message len so that we don't have to calculate its length.
	* pan/nntp.c (nntp_article_download): we know the length; pass it in.

	* pan/base/acache.c (acache_get_message): call acache_has_message()
	first, as it's much cheaper than testing the filesystem for the file.

	* pan/base/acache.c (acache_has_message): added sanity check.

	* pan/nntp.c (set_header_if_match): pass in the length of the key
	we're looking for so that we don't have to recalculate it.
	* pan/nntp.c (nntp_article_download): we know the length; pass it in.

2001-12-14  Charles Kerr <charles@rebelbase.com>

	(Housekeeping)

	* pan/filters/filter-*-ui.[ch]: moved thes files up into the GUI
	directory so that libfilters won't have to link against gui libs.
	* pan/test/test-filter.c: added a boilerplate for filter unit tests.

2001-12-14  Charles Kerr <charles@rebelbase.com>

	* pan/base/file-grouplist.c: fixed some issues with the grouplist
	file format 10 commited yesterday.

2001-12-13  Christophe Lambin <clambin@easynet.be>

	(Stable 'two-key' Sorting)

	* pan/group.[ch]: added the old sort key.
	* pan/file-grouplist.c: bumped up version number to 10 for the 'old 
	sort key' field. We now save both the old and new sort keys for each 
	group to keep the sort settings across Pan sessions.
	* pan/articlelist.c: sync.

2001-12-13  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/util-mime.c (pan_g_mime_parser_construct_message): ensure
	that the article body is non-NULL before calling strlen() on it.
	This fixes bugzilla #66853.

	* pan/base/article.c (article_get_body): If the article is invalid,
	return an empty string instead of a NULL pointer, so that clients
	can safely assume that no matter what they'll have a string to use.

2001-12-12  Charles Kerr <charles@rebelbase.com>

	(UI Tweaks)

	* pan/articlelist.c: since Christophe fixed my bugs from yesterday,
	now I have to introduce new bugs.  This changes the subjects of
	collapsed threads from "subject" to "subject (u)" where u is the
	number of new replies.  I haven't decided if I like this or not
	and am committing to get some feedback from the pan-users CVS users.

2001-12-12  Christophe Lambin <clambin@easynet.be>

	(Message IDs)

	* pan/identities/identity.[ch]: added a field to hold a custom fqdn
	for Message ID generation. 
	* pan/identities/identity-xml.c: sync.
	* pan/identities/identity-edit-ui.c: sync.

	* pan/message-window.c (populate_article_from_mw): if the selected
	profile has a fqdn, use it to generate the MessageID.

	(Bug Fixes)

	* pan/prefs.c (prefs_apply_cb): fixed a crash when trying to set
	custom foreground and/or background colors. This seems to be related
	to some GTK themes causing gtk_rc_get_style() to return NULL.
	Thanks to T'Az and Krishna Naik for reporting this problem.

	* pan/prefs.c: fixed some issues with yesterday's commits.

2001-12-11  Charles Kerr <charles@rebelbase.com>

	(UI Tweaks)

	* pan/prefs.c: added a help dialog to show the date format strings.
	* pan/prefs.c: moved "Layout" to the "Display" section
	* pan/prefs.c: moved News/Mail to "Servers - News" and "Servers - Mail"

        * pan/message-window.c: Clicking on the "Use External Editor" in the
	message composer now desensitizes the entire message composer window
	until the external editor has been closed.  This fixes all kinds of
	possible issues such as pressing the edit button twice, or hitting
	send while the external editor's still open, etc.

2001-12-09  Charles Kerr <charles@rebelbase.com>

	(New/Unread/Old/Read)

	Committed first draft of the changes described on pan-users.

2001-12-09  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/message-window.c (populate_post_info_pane): if Followup-To is
	set to 'poster', only send the article as an email. Thanks to 
	Christian Lohmaier for reporting this.

2001-12-07  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/task-headers.c: after deleting all headers, 'Get New Headers'
	would download an old header.

2001-12-06  Christophe Lambin <clambin@easynet.be>

	(UI Tweaks)

	* pan/prefs.c: modified the layout somewhat to make the Preferences
	window smaller. It now fits on a screen running at 800x600.

2001-12-06  Charles Kerr <charles@rebelbase.com>

	(GUI Headers)

	* pan/base/article.h (article_get_newsreader): removed unused func.
	* pan/base/article.h (article_get_header_run_hash): new function.
	* pan/base/run.[ch]: new module.
	* pan/gui-headers.c: use article_get_header_run_hash.

	(Strings on the Stack)

	* pan/base/pan-glib-extensions.h: pan_strdup_a: new alloca macro.
	* pan/base/pan-glib-extensions.h: pan_strndup_a: same.

2001-12-06  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/article.h: the replaced 'supercede' with 'supersede'.
	Apparently my "fix" for 0.11.1 was wrong.  son-of-1036 is explicit
	that there is no 'c' in supersede. :)

	(Usability)

	* pan/base/acache.c (acache_init): log a warning if the cache
	directory can't be read.  

	* pan/base/util-file.c (directory_check): log a warning if the
	directory can't be found and/or created.

2001-12-05  Charles Kerr <charles@rebelbase.com>

	Pan 0.11.1 Released!

2001-12-05  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/file-grouplist.c: fixed bug that caused upgrading from
	really old versions of Pan difficult.  Thanks to Brandon McCombs
	for reporting this bug.

2001-12-04  Charles Kerr <charles@rebelbase.com>

	(Housekeeping)

	* NEWS:
	* README:
	* configure.in: Bump version number to 0.11.1.

	(Bug Fixes)

	* pan/queue.c: fix a handful of mutex-related bugs.

2001-12-04  Duarte Loreto <happyguy_pt@hotmail.com>

        * configure.in: Updated to add new translation to Portuguese (pt) in ALL_LINGUAS.
        * NEWS: added pt translation to New features (as told in po/README_TRANSLATORS.txt)
        * CREDITS: Added pt translation to credits for 0.11.1

2001-11-03  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/util-file.c (check_directory): make sure there's always
	a G_DIR_SEPARATOR at the end of the path before we call mkdir.
	Apparently Mac OS X hates the trailing /.  Thanks to Max Horn
	for reporting this.

	* pan/test (Makefile.am): explicitly link against $(INTLLIBS).
	Thanks to Max Horn for reporting this.

	* pan/all-over-the-place: changed invocations of ctype's
	isxxx(*pch) from isxxx((int)*pch) to the correct
	isxxx((guchar)*pch).  Thanks to Morten Welinder for reporting
	this bug.

2001-12-02  Wang Jian  <lark@linux.net.cn>

	* configure.in(ALL_LINGUAS): Added zh_CN for Simplified Chinese.

2001-11-28  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/article.h (HEADER_SUPERSEDES): s/supersede/supercede/.
	* pan/article-actions.c: same

2001-11-27  Christophe Lambin <clambin@easynet.be>

	(GUI Headers)

	* pan/gui-headers.c (gui_headers_set_nolock): added the newsreader as
	one of the displayable headers. This basically looks for the article's
	'User Agent', 'X-Newsreader' or 'X-mailer' header and displays the
	value.  Thanks to Jim22 for requesting this feature.
	* pan/gui-headers.h: same.
	* pan/prefs.c (prefs_text_page): same.

	* pan/base/article.c (article_get_newsreader): new function for
	easily extracting the above.
	* pan/base/article.h: same.

2001-11-27  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/gnksa.c (gmtime_r): fix typo that caused Pan to not
	compile on Mac OS X.  Thanks to Max Horn for reporting this.

	(UI Tweaks)

	* pan/articlelist.c: the left/right arrow keys now collapse/expand
	the currently-selected threads.  Thanks to Chris Petersen and
	Martin Wulffeld for suggesting this.

	(Housekeeping)

	* configure.in: bumped version number.
	* README: same.
	* Makefile.am: added depcomp because automake is only human.

2001-11-26  Charles Kerr <charles@rebelbase.com>

	(Acache Tweaks)

	* pan/base/acache.c: changed the lookup table's key from filename to
	Message-Id.  We always have the Message-Id, but the filename is
	derived, so this saves needless derivation cycles.

	* pan/base/acache.c: removed "filename" from acache's internal tables.
	The filename was only used when removing an article from the cache,
	which is uncommon enough that we're better off deriving the filename
	at that point instead of using memory & cycles to keep it all the time.

	(Small Bugfixes)

	* pan/base/article.c (articles_set_read): add missing debug_exit().

	* pan/base/decode.c: cast to avoid Solaris warning.

	* pan/gui.c (navigation_menu): Fix typo.  Thanks to Nam SungHyun for
	reporting this bug.

2001-11-25  Charles Kerr <charles@rebelbase.com>

	(Paranoia)

	* pan/base/article.c (article_set_from_raw_message): new safety checks.
	* pan/base/article.c (set_from_raw_init_header_gmhfunc): same.

	* pan/base/gnksa.c (generate_message_id_from_email_addr): added
	g_warning if an invalid email address is passed in.

	(Random Tweaks)

	* pan/base/pan-glib-extensions.c (get_next_token_range): renamed to
	the more-accurately-named get_next_token_run, 

2001-11-24  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (fire_group_chnaged): since this is an idle func,
	we need to return 0 here or the function will keep being fired
	forever, pegging the CPU when the user hits "empty group".

	* pan/message-send.c: when sending articles, make sure to ref/unref
	PAN_SENT's articles, because the article being sent is placed into
	that folder, and the article needs to stay alive for the entire span
	of the task.

	* pan/base/article.c (article_is_valid): the group-has-a-memchunk
	check was not valid for folders, which prevented articles from being
	posted correctly.  Moved the group check up to a call to
	group_is_valid(), which is a better place to keep group's
	implementation details.

	* pan/base/group.c (group_is_valid): if the group isn't a folder and
	the article refcount is >0, make sure _article_chunk!=NULL.

2001-11-24  Christophe Lambin <clambin@easynet.be>

	(Bug Fix)

	* pan/base/newsrc-port.c (newsrc_import): fixed segfault when the
	newsrc file exists, but Pan is unable to read it (e.g. permissions).
	Thanks to Joris Lambrecht for reporting this bug.
	
2001-11-23  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/article-thread.c (check_multipart_articles): now parts 2..n
	are marked MULIPART_ALL or MULTIPART_SOME.  Previously only the first
	article was marked this way, which caused troubles when filters looked
	at individual articles to see if they were complete/incomplete.

2001-11-22  Charles Kerr <charles@rebelbase.com>

	(Random Tweaks)

	* pan/base/util-mime.c (pan_header_is_8bit_encoded): new function.
	* pan/base/article.c (article_set_author_from_header_impl): remove
	at least six malloc/free calls per call.
	* pan/nntp.c (nntp_download_headers): remove at least four malloc/free
	calls per header downloaded.
	* pan/nntp.c (nntp_article_downloaded): remove at least nine
	malloc/free calls per article body.  Yes, I know this is unimportant,
	I just don't want to start anything big before family gets here. :)

2001-11-21  Charles Kerr <charles@rebelbase.com>

	(Build Fix)

	* pan/thread-watch.c (thread_set_state): renamed pan_thread_set_state
	to avoid name collision with Mac OS X.
	* pan/thread-watch.c (thread_get_state): renamed pan_thread_get_state
	to avoid name collision with Mac OS X.
	* pan/articlelist.c: sync.
	* pan/filters/filter-thread.c: sync.
	* pan/rules/rule-action.c: sync.

	* configure.in: added gmtime_r and localtime_r checks.
	* pan/base/gnksa.c:  If gmtime_r or localtime_r aren't available,
	define them here.  Thanks to Max Horn for these Mac OS X fixes.

	(Random Tweaks)

	* pan/base/pan-callback.c: try to handle the steady state without any
	heap memory allocation or mutexes.

2001-11-21  Christophe Lambin <clambin@easynet.be>

	(Bug Fix)

	* pan/filters/filter-xml.c (populate_top): fixed a bug that caused 
	non-visible filters to reappear after restarting Pan. Thanks to
	Douglas Bollinger for reporting this.

2001-11-20  Christophe Lambin <clambin@easynet.be>

	(Filters)

	* pan/base/file-grouplist.c (read_group_data/write_groups): bumped up 
	file version to 8. We now also save the group's filter_show field 
	('Which Articles to Show').  Thanks to Uli Wachowitz for suggesting 
	this.

2001-11-20  Charles Kerr <charles@rebelbase.com>

        * If some bozo includes a windows pathname in the filename of an
          attachment, strip out that pathname.

2001-11-19  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

        * pan/articlelist.c (headers_fetched) fixed 0.11.0 bug that, when an
	empty group was activated, Pan would go to the server twice for new
	headers instead of once.  In addition to pointless load, if you were
	really unlucky there would be one or two new articles in the second
	load, marking the ones from the first run and leaving you scratching
	your head "how did I just download a batch of old articles from a
	new group?" :)

	(Usability)

	* pan/task-save.c (task_save_run):  Don't fail the task if we fail to
	decode an article that appears to not have attachments: the user may
	have left the "save attachment" button on in the "save article" dialog
	and shouldn't be penalized for that.

	(Safety Checks)

	* pan/base/article.c: added more sanity checks to check the validity
	of arguments passed in to artcile functions.

2001-11-18  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/save-ui.c: commit bugfix patch provided by Joseph Turian.

	* pan/task-save.c: fix a memory leak reported by Rick at mynet.dhs.org.

2001-11-17  Charles Kerr <charles@rebelbase.com>

	(Fixes for Terrible Bugs)

	* pan/base/file-headers.c (file_headers_save_group):
	* pan/base/file-headers.c (file_headers_save_folder): call
	directory_check() to ensure that the directory exists before
	we open the save file.
	* pan/base/file-headers.c (file_headers_save_group):
	* pan/base/file-headers.c (file_headers_save_folder): changed the
	return val from void to boolean so that the caller can know if the
	save failed.
	* pan/base/file-headers.c (file_headers_save_group):
	* pan/base/file-headers.c (file_headers_save_folder): log an error
	to the Pan Error Log if the save failed.
	* pan/base/util-file.c (pan_rename): return a gboolean, instead
	of a void, so that the caller can know if the rename was successful
	or not and take appropriate actions.
	* pan/base/util-file.h: sync.

	(Save State)

	* pan/base/server.c (server_add_groups): save the server's grouplist
	to disk whenever groups are added.
	* pan/base/serverlist.c (server_folders_load): when adding Pan's
	builtin folders, make sure to batch them up into a single call to
	server_add_groups() s.t. the grouplist is only saved once.  All other
	callers already batched the added groups...
	* tests/test-newsrc.c:
	* tests/test-decode.c:
	* tests/test-message-check.c: turn off autosaving off in places of
	regression tests where it makes no sense.

	(Usability)

	* pan/task-grouplist.c: make some status messages clearer.
	* pan/task-headers.c: same.


2001-11-16  Charles Kerr <charles@rebelbase.com>

	(Clear Groups)

	* pan/group-ui.c (group_empty_dialog): reworked this to handle
	multiple groups in a single dialog, instead of having one dialog
	per group.  Thanks to Vadim Berezniker and Jim Henderson for
	suggesting this feature.

2001-11-15  Christophe Lambin <clambin@easynet.be>

	(Bug Fix)

	* pan/queue.c (queue_run_thread): when a task fails, give the queue
	a nudge. This should fix the stalled queue problem reported by
	Alex V Flinsch, Alan Young and Gabi Davar.

2001-11-14  Charles Kerr <charles@rebelbase.com>

	(More Build Fixes courtesy of Alan Young)

	* pan/articlelist.c: changed some "g*array->len > 0" to
	"g*array->len > 0u" to make Compaq's C compiler happy.
	* pan/text.c: same.

	* pan/base/Makefile.am: add GTK_CFLAGS to INCLUDES.
	* pan/filters/Makefile.am: same.
	* pan/identities/Makefile.am: same.
	* pan/rules/Makefile.am: same.

2001-11-14  Charles Kerr <charles@rebelbase.com>

	(Pedantic)

	* pan/base/argset.h: the function passed to pthread_create()
	needs to return a void*, not void.
	* pan/rules/rule-ui.c: worker thread func return a void*, not void.
	* pan/grouplist.c: same.
	* pan/queue.c: same.

	* pan/base/decode.c: changed some C++-style comments to C-style.
	* pan/article-toolbar.c: same.
	* pan/gui.c: same.

	* pan/base/article.c: added explicit uchar/char casts.
	* pan/base/util-mime.c: same.
	* pan/filters/filter-xml.c: same.
	* pan/filters/rule-xml.c: same.
	* pan/filters/identity-xml.c: same.
	* pan/nntp.c: same.
	* pan/text.c: same.

	* pan/base/article.h: removed a comma from end of an enum list.
	* pan/base/article-thread.h: same.
	* pan/base/message-check.h: same.
	* pan/filters/filter-phrase.h: same.

	* pan/articlelist.c: "static struct arrayname [];" isn't legal --
	  remove the static keyword to make ansi happy.
	* pan/text.c: same.

2001-11-13  Charles Kerr <charles@rebelbase.com>

	(Layout)

	* pan/gui.c (gui_shutdown): fix bug that incorrectly saved the
	hpaned/vpaned values for layout type 5 (3 vertically stacked panes).
	Thanks to Douglas Bollinger and Erik W. Hanson for reporting this bug.

	* pan/gui.c (toggle_pane_visiblity): only rebuild the layout if the
	new state != the old state.  This prevents the layout from being
	rebuilt three unnecessary times during startup when initializing the
	menu widgets.
	* pan/gui-paned.c: sync.

	(GUI Paned/Notebook)

	* pan/gui.c: rewrote all the crufty gui-paned/gui-notebook code.  Now
	keyboard activation is be more consistent between the two layouts.
	* pan/gui-notebook.c: same.
	* pan/gui-paned.c: same.

	(Thread/Unthread Header Pane)

	* pan/prefs.c (header_pane_is_threaded): new variable for prefs_init().
	* pan/gui.c: save header_pane_is_threaded to gnome_config() on exit.
	* pan/articlelist.c: use header_pane_is_threaded.  This solves a bug
	with having to press the thread/unthread button twice before it would
	work properly.  Thanks to Jed Baer for reporting this bug.

	(Grouplist Usability Changes)

	* pan/grouplist.c: remembering the last Pan session's group_mode is
	not really in sync with what would be most usable -- almost always
	people want to see "subscribed" for daily use, and then look at "all"
	if want to subscribe to a group.  The new scheme uses this fact to
	decide the mode: when bootstrapping/switching to a server, if the
	server has subscribed groups, we set the view to "subscribed".
	Otherwise it's likely the user wants to subscribe to some, so we set
	the view to "all", and if there are no groups, also show the
	"download group list?" dialog.

	* pan/grouplist.c: whenever loading a server and we can't find any
	groups for that server, show the "download group list?" dialog.
	Previously this was only done the first time, for new users.

	(Plumbing)

	* pan/base/file-grouplist.c (file_grouplist_exists): now returns a
	ServerGroupsType instead of a bool so that you can tell what _type_
	of groups exist.

	* pan/base/file-grouplist.c (save_groups_to_file): if no articles
	exist in a grouptype, unlink the corresponding .dat, .idx files.

	* pan/base/group.c (groups_set_subscribed): when the subscribed
	state of groups change, save the affected grouplists for safekeeping.

2001-11-12  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (articlelist_selection_changed_cb): ack,
	we were leaking a GPtrArray each time we read an article!

	(Usability)

	* pan/gui.c (view_menu): renamed the 'zoom' functions' menu text to
	to something more easily understood.  Thanks to Cory Dodt for this
	suggestion.

	* pan/article-toolbar.c (article_toolbar_new): added "filter by
	message-id" to the article toolbar's filter.

	* pan/gui.c (gui_key_press_cb): shift-delete will delete threads
	again now.  This went away for awhile for no apparent reason.  Thanks
	to Kevin (kevlinux) for bringing this to my atttention.

	* pan/dialogs/dialog-newuser.c (get_default_news_server):  If the
	environment variable NNTPSERVER isn't set, get the host's domain and
	prepend it with "news.".  This should correctly guess the news server
	for most .edu sites and domestic cable modem users.

2001-11-11  Charles Kerr <charles@rebelbase.com>

	(Usability)

	* pan/gui-paned.c (gui_paned_enter_clicked_nolock): if >1 article
	is selected when Return is pressed, download & show the first article
	as before, but also download articles 2..n in a second task.  Thanks
	to Cory Dodt for suggesting this improvement.

	* pan/base/article.c (article_get_unique_threads): the return array
	should maintain the sort order of the incoming articles, instead
	of in an unordered bag.  For example when the user hits "Download
	Threads", one wants to see the articles download from the top article
	on down, rather than in a random pattern.  Thanks to Cory Dodt for
	suggesting this improvement.

	(Bug Fixes)

	* pan/base/acache.c (acache_set_message): fix bug that caused the
	article cache to grow larger than the user-specified maximum.
	Thanks to Muralito and Alan Young for reporting this bug.

	* pan/base/article.c (article_get_thread_message_id): return the right
	message-id even if the Article passed in has a broken References:
	header.  We do this by walking up the article hierarchy (because
	article_thread does a pretty good job of threading even without
	References) before looking at the References: header.  This fixes a
	bug that kept some threads from being Watched or Ignored properly
	when the user hit Watch or Ignore.  Thanks to David Watson for
	reporting this bug.

2001-11-10  Charles Kerr <charles@rebelbase.com>

	(Usability)

	* pan/base/decode.c: if the decode file can't be created for whatever
	reason (for example, the specified directory isn't writable) then send
	an error to the Pan log and fail the task.  Thanks to Sebastien Leclair
	for suggesting this.
	* pan/task-save.c: sync.
	* pan/base/util-file.c (directory_check): change retval from void to a
	gboolean that tells whether or not the specified directory exists.

2001-11-09  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/pan.c: moved PAN_SENT and PAN_SENDLATER to pan/base/serverlist.c,
	so that they will be defined in the lowest-level library in which
	they're used.  This fixes a compile error reported by Francesco Lamonica
	and Gavi Dabar.

	(GUI Tweaks)

	* pan/gui.c: replaced "Get Specific Articles..." with
	"Download Articles..." by popular demand from Jake Zhukov and
	Alex Flinsch.

	(Save Setup)

	* pan/base/save-setup.c: removed -- it's too risky in a threaded app.
	* pan/articlelist.c (clear_group_nolock): save here instead.
	* pan/articlelist.c (set_group_mainthread_end): and here.
	* pan/task-headers.c (task_headers_run): and here.
	* pan/base/group.c (group_unref_articles): and here.

	* pan/file-headers.c (file_headers_save): added a mutex s.t. only one
	group can be saved at a time.  This prevents the same group from being
	saved twice at the same time and seems to make Pan run a little more
	smoothly too.

	(Watch / Ignore Threads)

	* pan/articlelist.c (articlelist_selected_thread_watch_nolock):
	faster watching of multiple threads.

	* pan/articlelist.c (articlelist_selected_thread_watch_nolock):
	if two articles in a thread were selected when 'watch' was hit,
	the thread wasn't watched (actually, it was watched, then unwatched
	when the second article was checked).

2001-11-08  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/save-setup.c (save_setup_impl): put a mutex in here so
	that we don't get two threads saving the setup concurrently.

	* pan/group.c (group_unref_articles): fix thread issue with calling
	save_setup().  This was causing all kinds of problems yesterday.

	* pan/group.c (group_destructor): correct the order in which items
	are freed.  This fixes a barrelful of FMR, FMW, ABR, and ABW errors.

	* pan/text.c (text_pane_popup_menu): added "GNOMEUIINFO_END" to
	the end of this array.  Fixes ABR and ABW errors.

	* pan/acache.c (acache_set_message): Fix memory leak.

	* pan/prefs.c (prefs_servers_changed): If the server list has changed,
	make sure it's saved to disk for posterity when user hits Apply or OK.

	(Testing)

	* pan/base/article.c (article_is_valid): add more tests.
	* pan/base/article.c (articles_are_valid): new convenience function
	for sanity checks.
	* pan/base/group.c: sync.
	* pan/base/article-thread.c: sync.

	(Save Setup)

	* pan/save-setup.c: save_setup now comes in two flavors,
	save_setup_now() and save_setup_idle(), to distinguish priority.

2001-11-07  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/group.c: call save_setup() whenever a group's article
	refcount goes to zero.  This is 'crash insurance' was discussed on
	pan-users.

	* pan/nntp.c (nntp_download_headers): don't call
        group_set_articles_dirty() here -- that should be (and is) done
	when group_add_articles() in called with the headers generated
	by nntp_download_headers().

	* pan/base/log.c: added a thread mutex to control access to the
	Pan log.  This solves a bug reported by Jed Baer where one thread
	was halfway through shutting down the Pan log when another thread
	logged a shutdown message and confused everything.

	(Menu Changes)

	* pan/gui.c: moved "Delete all Articles" to "Empty ..." next to
	"Delete" in the group menu.  Thanks to jzhukov for suggesting that
	this be moved.

	* pan/articlelist.c: added "Delete All" next to "Delete" and
	"Delete Thread" in the article menu & popup menu.  Thanks to
	jzhukov for suggesting that this be moved.
      
2001-11-06  Charles Kerr <charles@rebelbase.com>

	(Widen the filter_bits to hold the new "by me/by others")

	* pan/base/group.h: (filter_bits): widened from guint16 to guint32

	* pan/base/file-grouplist.c: bumped format version number to 7.  The
	only change is that if the loaded version <= 6, we turn on the widened
	filter bits with |= 0xFFFF8000 to make sure the "by me" and "by others"
	bits are turned on by default.

2001-11-06  Christophe Lambin <clambin@easynet.be>

	(Filters - Articles by me)

	* pan/article-toolbar.c: added new filter to the toolbar.
	* pan/article-list-toolbar-mediator.c: sync.
	* pan/base/group.h: sync.

	* pan/xpm/by_me.xpm: new icon for toolbar filter.
	* pan/xpm/by_others.xpm: same.

	* pan/filters/filter.dtd: added new filter definition.

2001-11-05  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/group.c (group_ref_articles): only call
	group_set_article_qty if we've just loaded headers from disk and
	therefore have idea to believe that the article qty has changed.
	This prevents a gui double lock in rare circumstances.

	* pan/base/group.c (group_thread_if_needed): put the mutex lock
	before the (if_article_threading_dirty) check instead of after,
	so that multiple threads don't hit that and both, hitting the
	dirty flag, think that they need to thread the articles.  Threading
	once in enough.

	* pan/base/article-thread.c (thread_articles): slightly faster
	threading of articles.

2001-11-05  Christophe Lambin <clambin@easynet.be>

	(Filters)

	* pan/filters/filter-mine.[ch]: implemented a new filter to
	automatically select articles posted by the user. This is done
	by cross-referencing the article's author with those in the user's
	Profile(s).

	* pan/filters/filter-edit-ui.c: sync.
	* pan/filters/filter-xml.c: sync.
	* pan/filters/Makefile.am: sync.

2001-11-03  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c: flag/unflag thread didn't work properly.
	Thanks to Peter Borgmann for reporting this bug.

	* pan/nntp.c: when collapsing a double period as described
	in RFC977 2.4.1, only erase one of the damn periods instead
	of both of them.  Thanks to Thomas K. Gamble for reporting
	this embarassing bug.

2001-11-02  Charles Kerr <charles@rebelbase.com>

	Pan 0.11.0 Released!

2001-10-31  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/group.c: silenced three glib warnings.  Thanks to
	David Oberbeck for reporting this bug.

2001-10-30  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/message-window.c (create_body_pane_nolock): ensure that
	control+return is a shortcut for "Send Now" as in Agent & Gravity.
	Thanks to Himanshu J. Gohel for reporting this bug.

2001-10-29  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/article-toolbar.c (article_toolbar_set_filter): when the
	caller sets a new filter in the toolbar, make sure to update
	the GnomeEntry search field to reflect the new filter.

	* pan/base/util-wrap.c (rot13): Fixed bug in the rot13 code that
	truncated lines when they encountered characters like , , or .
       	Thanks to Nightshade for reporting this bug.
	* pan/tests/test-wrap.c: added regression test to ensure that 
	characters like , , or  don't truncate lines.

2001-10-26  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/artlclelist.c: Fixed 0.10.0.93 that didn't properly show
	new articles added to the active group.

	(Housekeeping)

	* po/et.po: added new Estonian translation by Tivo Leedjrv.

	* gmime: sync with fejj's code.

2001-10-25  Christophe Lambin <clambin@easynet.be>

	(Bugfix)

	* pan/queue.c (queue_run_thread): fixed thread bug that caused
	tasks to get stuck in 'queued' state. Thanks to Frederik 
	Vanrenterghem, Jed S. Baer and Alan Young for reporting this.

2001-10-25  Charles Kerr <charles@rebelbase.com>

	(FreeBSD Build Fixes)

	* pan/filters/filter-phrase.h: #include <sys/types.h> before
	#include <regex.h> to compile under FreeBSD.  Thanks to Christian
	Kuhtz for this suggestion.

	* pan/text.c: removed #include <alloca.h>, which doesn't exist on
	FreeBSD -- instead, just prototype it directoy.  Thanks to
	Christian Kuhtz for this suggestion.

	* pan/base/gnksa.c: use gettimeofday() instead of ftime().  Thanks
	to Christian Kuhtz for this suggestion.

2001-10-22  Charles Kerr <charles@rebelbase.com>

	(Popup Menus)

	* pan/articlelist.c: added popup menus back in.
	* pan/text.c: same.

2001-10-22  Christophe Lambin <clambin@easynet.be>

	(bye bye libESMTP)

	* pan/smtp.c: restored the pre-libESMTP version of SMTP support.
	LibESMTP definitely seems like a good candidate for enhancing Pan's 
	support for SMTP. However, at this time there remain too many
	packaging issues. Too bad. Maybe later.
	* pan/Makefile.am: same.
	* configure.in: same.
	* pan.spec.in: same.
	* acconfig.h: same.

2001-10-21  Charles Kerr <charles@rebelbase.com>

	(UI Tweaks)

	* pan/prefs.c: added a third quoted depth ">>>" color.
	* pan/text.c: sync.

2001-10-21  Christophe Lambin <clambin@easynet.be>

	(Profiles)

	* pan/message-window.c: implemented a PanCallback to keep in sync
	with the Profiles while writing an article. This fixes a segfault
	when we remove an profile, while writing an article using that
	profile. Thanks to lduperval for reporting this bug.

	* pan/identities/identities-manager.[ch]: same.

2001-10-20  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (articlelist_set_sort_type): when the sort type
	changes, make sure the change is propagated back into the group's
	settings where it will be remembered.  Thanks to Alen Williams for
	reporting this bug.

	* pan/message-send.c (build_nntp_header): Use GMime's InternetAddress
	object when composing the From: header so that we get the right
	encoding.  Thanks to Julien Plissonneau Duquene for reporting
	this bug.  (TODO: migrate the entire posting to GMimeMessage)

	* pan/tests: forgot to sync the tests with the new two-argument
	group_new() function.  Thanks to Laurent Duperval for reporting
	this bug.

	(Delete/Mark Read Crossposts)

	* pan/base/article.c (article_xref_foreach): now takes a
	ServerGroupsType argument s.t. we only traverse groups in
	that set.
	* pan/base/article.c (articles_set_read): only also mark read
	crossposts in subscribed groups.  It's not worth the load to
	mark in groups that the user will never look at.
	* pan/article-actions.c (delete_articles): when deleting an
	article, only delete crossposts in subscribed groups.  Same
	reason.
	* pan/base/server.c (server_get_named_group_impl): take an
	argument of ServerGroupsType so that we know which types to
	look through for this group.
	* pan/base/server.c (server_has_group_in_type): new function.

	(Speedups)

	* pan/base/article.c (article_set_header_impl): if we're initing
	this header then we know there's no current value for the header,
	so don't bother calling article_remove_header() first.

2001-10-19  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/message-window.c: fixed a couple of cases where Articles
	were still being pan_object_{un}ref()ed, even though Article is
	no longer a PanObject.  C++ would've been helpful here. :)

	(More snubbing of PanObject)

	* pan/base/group.[ch]: Group's no longer a PanObject either.  Its
	memory management is controlled by the parent Server object, just
	as Groups control their Article objects.
	* pan/articlelist.c: sync.

2001-10-18  Charles Kerr <charles@rebelbase.com>

	Pan 0.10.0.93 Released!

2001-10-17  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/gui-notebook.c:  Fix crash-on-zoomed-startup bug.  Thanks to
	Leo Lipelis for reporting this bug.

	* gmime/gmime-charset.c:  Upgrade this file to get a fix for Debian
	and Solaris charsets.  Thanks to Jeffrey Stedfast for writing GMime.

	(Dethreading)

	* pan/grouplist.c: Make grouplist's updates operate in the mainthread
	too.  Similar to earlier updates to text.c and articlelist.c.

	(Code Cleanup)

	* pan/article-toolbar.c: removed unnecessary #includes.
	* pan/sockets.c: same.

2001-10-17  Christophe Lambin <clambin@easynet.be>

	(libESMTP)

	* configure.in: now using libESMTP 0.8.6.
	* pan.spec.in: same.

2001-10-17  Charles Kerr <charles@rebelbase.com>

	(Bug "Fixes")

	* pan/base/decode.c: shut up compiler warning.
	* pan/base/util-mime.c: same.

	* pan/status-item-view: try harder to make this threadsafe.

2001-10-15  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/queue.c (queue_mainloop): patch for signals-get-lost bug
	reported by Himanshu J. Gohel, Jed S. Baer, John LeMay, and
	Douglas Kilpatrick.

2001-10-13  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/smtp.c: #include <pan/base/log.h>.  Ooops.

	* pan/articlelist.c (articlelist_set_group_nolock): if the user has
	selected to fetch the group's new headers on load, make sure we do
	that.

	* pan/queue.c (queue_run_what_we_can): fixed thread bug that caused
	some tasks to get stuck in an "Abort" state even if they completed 
	successfully.

	* pan/task-save.c (task_save_run): fix small but ugly FMR/FUM bug.

	(UI Tweaks)

	* pan/task-headers.c: made some of the status messages a little
	shorter so that they'll fit in the progressbar better.

2001-10-12  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (add_article_to_ctree_nolock): when calculating
	the linecount of a multipart binary, don't double the count for parts
	that have a repost too.

	(Dethreading)

	* pan/text.c: decrufting.  Renamed & reorganized inscrutably-named
	functions that have grown like mold over time.  Sorted the code into
	less irrational groupings.  Decreased the number of thread steps
	needed to update the text pane.  Fixed thread concurrency bug reported
	by war@starband.net.

	* pan/articlelist.c (articlelist_set_sort_type): throw away the old
	implementation and just call refresh (REFRESH_SORT) instead.

	(Code Tweaks)

	* pan/nntp.c (nntp_download_headers): remove 5 g_strdup()/g_free()
	pairs for each header downloaded.  Probably an unimportant change,
	but every little bit helps.

2001-10-11  Christophe Lambin <clambin@easynet.be>

	(Dethreading)

	* pan/articlelist.c: fixed crash when selecting an empty folder.

	(libESMTP)

	* pan.spec.in: added libESMTP to BuildRequires & Requires.
	* configure.in: include libESMTP's CFLAGS to cover non-standard 
	installations. Thanks to war@starband.net for reporting this.
	* pan/Makefile.am: sync.

2001-10-10  Charles Kerr <charles@rebelbase.com>

	(Dethreading)

	* pan/articlelist.c: rewrote the ways in which the articlelist's
	group is set and refreshed.  This simpler and cleaner now, at least
	as much as possible in threads.  This should ameliorate some of the
	"pan's threading is unstable!" complaints.

	* pan/base/group.[ch]: added an Article GMemChunk + accessor.
	* pan/base/article.[ch]: Article is no longer a PanObject; instead,
	its life cycle is tied to the article_refcount of the Group which
	owns it.  This resolves the Article life cycle issues like "what
	happens if a rule deletes an article that articlelist is drawing?"
	and "what if an article is expired while a person's reading it?" etc.

2001-10-10  Christophe Lambin <clambin@easynet.be>

	(libESMTP)

	* pan/smtp.c: rewrite, using Brian Staffort's libESMTP library.

	* configure.in: build with libESMTP.
	* acconfig.h: same.
	* pan/Makefile.am: build with libESMTP.

2001-10-09  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/gui-headers.c (gui_headers_set): wrap the author to cope with
	excessively long email addresses. Thanks to David Watson for
	reporting this.

2001-10-09  Charles Kerr <charles@rebelbase.com>

	(Dethreading)

	* pan/base/argset.c: new module.

	* pan/base/group.c (group_remove_articles): don't unset the group
	pointer when we remove the article from the group's article list --
	The group is still managing the article's memory during its lifespan.

	* pan/base/status-item.c (status_item_new_with_description): new
	constructor that lets the client pass in a description string at
	creation time.

	* pan/base/status-item.c (status_item_destructor): don't set the
	status-item to inactive here; this causes an unhappy feedback loop.
	A status item should be inactive before it's destroyed.

	* pan/status-item-view.c (status_cb_nolock): new impl function.

2001-10-07  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/filters/filter-top.c (filter_top_dup): initialise 'negate'
	so we can create negative aggregate filters. Thanks to Jed S. Baer
	for reporting this.

2001-10-04  Charles Kerr <charles@rebelbase.com>

	(UI: Text Pane Colors)

	* pan/pan.c (main): get the "cmap" variable before calling prefs_init
	so that we can alloc colors inside prefs_init.

	* pan/prefs.c: added two new preferences to toggle on/off using
	the gtkrc colors vs. custom colors in the article view window.

	* pan/text.c: fixed color-assignment bugs.  Thanks to war@starband.net
	for reporting this bug.

	(Code Tweaks)

	* pan/prefs.c (update_entry_and_bool_from_toggle_button): return
	a gboolean flag to indicate if the value has changed.

	* pan/base/debug.c (debug_printf): added "function" argument that
	uses gcc's PRETTY_FUNCTION if we're using gcc.
	* pan/debug.h: sync debugN and odebugN macros.

	* pan/base/util-mime.c: small cleanup.

2001-10-03  Christophe Lambin <clambin@easynet.be>

        * pan/articlelist.c (article_toolbar_set_filter): better fix
        for the Xlib async error.

2001-10-03  Charles Kerr <charles@rebelbase.com>

	* gmime/gmime-filter-basic.c: fix some compiler warnings.
	Also, add in a g_message couting the number of streams alive.
	There's a stream leak somewhere in Pan that I haven't been able
	to track down yet.  (fejj if you want to look at this -- do you
	have a news server?  If not, news.ou.edu is public -- go to
	alt.binaries.picture.fractals and start reading messages.
	Each read message leaves two dangling streams.)

2001-10-03  Jeffrey Stedfast  <fejj@ximian.com>

       * pan/base/util-mime.c (look_for_uuencoded_data): After splitting
       out the uu parts, reset the stream immediately so that if/when we
       write out the content stream, it will write from the
       beginning. This should also make it so any substreams created from
       this stream will be reset. Move the in_stream unreffing action to
       right after we create in_buf since we don't need to hold a ref any
       longer - this doesn't really change anything, it's more for
       peace-of-mind. Once in the for-loop, do proper unreffing of
       streams.

2001-10-03  Charles Kerr <charles@rebelbase.com>

	* pan/Makefile.am: update static libraries for Purify.

	* pan/articlelist.c: removed some debugging g_messages.
	* pan/nntp.c: same.

	* pan/text.c: sync with gmime update.
	* pan/base/article.c: same.
	* pan/base/decode.c: same.
	* pan/base/util-mime.c: same.

2001-10-03  Charles Kerr <charles@rebelbase.com>

	* pan/rules/rule-manager.c (add_any_needed_canned_rules): fix small
	memory leaks.  Thanks to Richard Deken for reporting these bugs.

	* pan/gui.c (edit_menu): added "Select message body" back into menu.
	Thanks to David Oberbeck for requesting this.

2001-10-02  Charles Kerr <charles@rebelbase.com>

	* pan/article-toolbar.c (sensitize_builtin_filters): fix
	Xlib async error.

	* pan/task-save.c: remove unused debugging statement
	* pan/base/serverlist.c: thread safety safeguard.

	* pan/articlelist.c (filter_changed_thread): some pthread safety
	checks when applying a filter to a set of articles.

2001-10-01  Christophe Lambin <clambin@easynet.be>

	* pan/message-window.c (apply_identity): don't add an attribution
	line for new posts & emails.

2001-09-28  Charles Kerr <charles@rebelbase.com>

	* pan/text.c: dead code removal.

	* pan/identities/identity.c (identity_dup): fixed small memory leak.
	Thanks to Richard Deken for reporting this bug.

2001-09-27  Charles Kerr <charles@rebelbase.com>

	* pan/text.c (append_text_cb): new function to display all text
	attachments instead of just the first one.  Thanks to Robert Tilley
	for reporting this bug.

	* pan/base/acache.c (acache_init): don't bother regenerating the
	message-id list if acache_init()'s already been called.

	* pan/base/article.c (article_get_header): fix for getting xrefs.
	This gets "when article is deleted/read/unread, propagate that
	to its crossposts" working again.

	* pan/status-item-view.c: fix problem that caused the progress bars
	to not always be cleared out when a task ended.

	* pan/text.c: unset the text widget's usize height when we're
	not showing pictures.  Thanks to Jed S. Baer for reporting this
	bug.

2001-09-23  Charles Kerr <charles@rebelbase.com>

	* pan/nntp.c (nntp_article_download): That fix in for version 1.197
	wasn't such a great idea; it created a new bug. Try a different
	fix instead.

2001-09-22  Charles Kerr <charles@rebelbase.com>

	0.10.0.91 Released!

2001-09-20  Charles Kerr <charles@rebelbase.com>

	* pan/articlelist.c: don't set the CTreeNodes' fonts when
	we can't load the font (user has selected a font that doesn't
	exist, etc).

	* pan/gui.c (navigate_menu): added new shortcuts for parent
	article and top-of-article.

	* pan/status-item-view.c: fixed crash that occurred when updating
	the gtkprogressbar in a non-gtk thread under pixmapped gtk themes.

	* pan/text.c (set_text_from_article_idle): silenced gtk warning.

	* pan/queue.c (queue_get_tasks): Made this function a little
	safer: we now return a newly-allocated array, instead of the
	queue's private GSList.  We also ref() each task in case it
	would otherwise be destroyed by the time the caller is done
	with the task list.  This new task array is created and reffed
	inside the queue_lock mutex.

	* pan/message-window.c (create_body_pane_nolock): always use a
	monospace font when posting, even if the user uses a variable
	width font when reading.  Thanks to Christian Lohmaier for
	reporting this.

2001-09-18  Fatih Demir <kabalak@gtranslator.org>

	* ABOUT-NLS & config.h.in: Removed from CVS.

2001-09-17  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* configure.in: use gdk-pixbuf-config, rather than gnome-config,
	when detecting the cflags/version/libs for gdk-pixbuf.  Thanks to
	Justin Piszcz for reporting this bug.

2001-09-16  Charles Kerr <charles@rebelbase.com>

	(GMime file support)

	* gmime/gmime-content.[ch]: new files that abstract out how a
	GMimePart's content is held - in a memory array or in a temporary
	file.  Being able to use temporary files lets us decode those
	iso-image attachments without running out of memory.

	* pan/base/decode.c: sync.

	* pan/base/util-mime.c: sync.  This actually lets us drop a couple
	of intermediate steps that used to be needed to massage the data
	into the right shape.

	* pan/text.c: sync.

2001-09-11  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/smtp.c: Fixed problem with date header not being sent when
	sending mail from Pan.  Thanks to Derek Poon for reporting this
	problem and submitting a fix.
			     
	* pan/base/newsrc-port.c: Fixed problem with importing an empty
	.newsrc file.  Thanks to Derek Poon for reporting this problem and
	submitting a fix.
							 
	* pan/queue.c: Fix problem with the queue running away with the
	CPU in 0.10.0.90.  Thanks to Chris Vance for reporting this bug and
	submitting a fix.

	* pan/text.c: Silence a g_warning.  Thanks to Muralito for reporting
	this bug.

	* pan/prefs.c: Fix a couple of typos in the preferences dialog.
	Thanks to Jacob Ils Christensen for posting this patch.

	* pan/dialogs/dialog-newuser.c: Hide the password when the user types
	it in.  Thanks to Jacob Ils Christensen for posting this patch.

2001-09-07  Charles Kerr <charles@rebelbase.com>

	(Goodbye, gtkhtml)

	* configure.in: remove gtkhtml checks, add gdk-pixbuf instead.
	* pan/text.c: gdk_pixbuf for inline images; homebrew clickable URLs
	* pan/prefs.c: add user-configurable URL link color, 2nd quote color

2001-09-07  Charles Kerr <charles@rebelbase.com>

	(Safeguards)

	* pan/base/pan-object.c (pan_object_is_valid): new sanity check func.
	* pan/base/group.c (group_is_valid): new sanity check func.
	* pan/base/group.c (most functions): g_return_if_fail(group_is_valid())
	in most of the function entry assertions.
	* pan/base/articlec (article_is_valid): call pan_object_is_valid().

2001-09-05  Christophe Lambin <clambin@easynet.be>

	(Profiles)

	* pan/message-window.c (post): if we're cross-posting, remember
	the used profile for all newsgroups we just posted too.

	(Bug Fix)

	* pan/message-window.c: avoid duplicate attribution lines if the
	current profile gets changed while writing an article.

2001-09-05  Charles Kerr <charles@rebelbase.com>

	(Tweak)

	* pan/grouplist.c (-grouplist_get_group_readable_name): use a buffer
	instead of a lot of alloc/free's.

	(Safety)

	* pan/file-headers.c: added some extra g_return_if_fail()s to be safe.
	* pan/file-grouplist.c: same.

2001-09-04  Charles Kerr <charles@rebelbase.com>

	(Usability)

	* pan/articlelist.c (group_articles_removed_cb): select, but
	don't activate, the next article after one's deleted.  This
	was intended to be a feature but got negative feedback.

	(Bug Fix)

	* pan/group-actions.c (delete_groups_dialog_cb): don't delete the
	groups if the user hit "no, don't do it".  D'oh!  Thanks to
	Mike Robinson for reporting this bug and submitting a patch.

	(Tweak)

	* pan/nntp.c (nntp_article_download): reuse a buffer, rather than
	alloc/free'ing a new string for each line we read from the server.

	* pan/text.c: sync with some of the gtkhtml-less text.c codebase.
   
2001-09-04  Christophe Lambin <clambin@easynet.be>

	(UI Tweak)

	* pan/articlelist.c: in unthreaded mode, set the article's style
	to reflect only the status of the article itself, not of the replies.
	
2001-09-03  Charles Kerr <charles@rebelbase.com>

	* pan/gui.c: added accelerators for getting articles & sub/unsub
	from group, by request.

2001-09-03  Charles Kerr <charles@rebelbase.com>

	* pan/gui.c: added shortcut for thread/unthread the header pane.

	* pan/base/article-thread.c: have threads with more unread/new
	children show up higher in the sort.

	* configure.in: lowered glib requirement to 1.2.8, since that's
	what gtk 1.2.10 requires.

2001-09-02  Charles Kerr <charles@rebelbase.com>

	(Collapse Group Name)

	* pan/gui.c: added to navigate menu: "Collapse names in group pane".
	* pan/prefs.c: sync.
	* pan/gropulist.c: sync.

2001-09-02  Charles Kerr <charles@rebelbase.com>

	(Save Dialog)

	* pan/save-ui.c: new file, replacing save.c, which integrates the
	"Save Article" and "Save Attachments" dialogs together.
	* pan/task-save.c: new file, replacing task-decode.c, which
	not only decodes articles but optionally saves the article bodies too.
	* pan/article-actions.c: sync.

	(Bug Fixes)

	* pan/nntp.c (nntp_download_body): if we somehow get fed a blank line
	from the server, don't crash.

2001-09-02  Charles Kerr <charles@rebelbase.com>

	(UI Tweaks)

	* pan/gui.c: added "space reading" into the navigational menu.

	(tmp dir)

	* pan/base/base-prefs.h: we no longer define our own tmp dir variable.
	Use g_get_tmp_dir() instead so that we can behave more like other glib
	apps.
	* pan/base/util-file.c: sync.
	* pan/prefs.c: sync.

	(portability (!))

	* pan/base/serverlist.c: use G_DIR_SEPARATOR where appropriate.
	* pan/base/ufil-file.c: same.
	* pan/base/file-grouplist.c: same.
	* pan/base/file-headers.c: same.
	* pan/base/acache.c: same.
	* pan/identities/identity-manager.c: same.
	* pan/filters/filter-manager.c: same.
	* pan/rules/rule-manager.c: same.
	* pan/prefs.c: same.
	* pan/thread-watch.c: same.
	* pan/save.c: same.

2001-09-02  Charles Kerr <charles@rebelbase.com>

	(Sorting)

	* pan/base/article-thread.c (sort_articles): added sorting by article
	raad state (new, unread, new replies, etc) and by action state
	(flagged, queued, etc).  This is triggered by clicking on columns 0
	and 1 in the thread tree.

2001-09-02  Charles Kerr <charles@rebelbase.com>

	(Living with Threads)

	* pan/articlelist.c: keep an array of all the articles we're using.
	Each article's refcount is raised by 1 as long as articlelist is using
	it.  (This has a nice side-effect of letting articlelist to stable
	sorting again)
	* pan/articlelist.c (clear_article_buffer): sync.
	* pan/articlelist.c (articles_added_cb): sync.
	* pan/articlelist.c (articles_removed_cb): sync.
	* pan/articlelist.c (articlelist_set_contents): sync.
	* pan/articlelist.c (articlelist_set_group_maybe): sync.

	* pan/articlelist.c (articlelist_update_articles): ref the
	articles before passing them along to an idle function, just
	to make sure they're still alive when the idle function's run.
	* pan/articllist.c (artlclelist_articles_read_changed): same.

	* pan/group.c: added a field "article_mutex" used whenever the group
	is doing heavy manipulation of its article list: for example, we don't
	want one thread Threading the articles while another is expiring old
	articles, etc.

2001-09-01  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (articlelist_articles_read_changed_idle):
	A GPtrArray and its buffer were being leaked each time an article's
	read state changed, yuck.

	* pan/text.c (text_create): fix problem with changing the background
	color of the gtkhtml pane.  Thanks to Tivo Leedjrv for providing
	this fix.

	* pan/base/group.c (group_inc_article_read_qty): return if
	group==NULL.  This was triggering a crash in articlelist under
	torture conditions.

	* pan/base/pan-glib-extensions.c (pan_str_unescape): fixed unescaping
	bug.  Thanks to Tivo Leedjrv for reporting this bug and providing
	a fix.

	* tests/test-pan-callback.c: sync the callback functions' signatures
	to match the PanCallback changes made earlier in the week.

	* pan/base/pan-glib-extensions.c (get_next_token_range): don't
	dereference a NULL pointer.

2001-08-31  Christophe Lambin <clambin@easynet.be>

	(Bug fix)

	* pan/base/file-headers.c (file_headers_save_folder): don't complain
	so loudly when an article has no body.

2001-08-30  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/util-mime.c (look_for_uuencoded_data): small memory leak.

	* pan/gmime/gmime-utils.c: update snapshot to fix encoding bug.
	Thanks to Christian Lohmaier for reporting this bug.

2001-08-30  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/message-window.c (article_gen_attribution_string): fixed
	corruption of the short author name.

	* pan/message-window.c (post): record the profile before we
	destroy the message window.

2001-08-29  Charles Kerr <charles@rebelbase.com>

	(Profiles)

	* pan/pan.c (shutdown): call identity_manager_shutdown_module().

	(Usability)

	* pan/gui.c: more descriptive tooltips for the task/connections
	buttons.

	* pan/prefs.c: made the default news server behavior to go online
	without being asked.  Most users seem to be online, rather than
	offline users, so this should be the default.

	(Stupid Tweaks)

	* pan/acache.c (acache_get_filename): use a buffer on the stack
	to avoid unnecessary malloc/free in some frequently-called funcs.
	* pan/util.c (get_date_display_string): same.
	* pan/article.c (article_get_short_author_str): same.

2001-08-29  Christophe Lambin <clambin@easynet.be>

	(Profiles)

	* pan/message-window.c (determine_default_identity): improved logic
	for guessing the default profile to propose. This mainly helps when
	writing a new email (e.g. Feedback).

	* pan/identities/identity-manager.c: new helper function to find
	a profile with matching author name & email address.
	* pan/identities/identity-manager.h: sync.

2001-08-29  Charles Kerr <charles@rebelbase.com>

	* pan/docs/faq.html: updated faq.

	* pan/configure.in: bumped glib/gtk requirements to 1.2.10

	* pan/identities/identity.c (identity_constructor): g_strdup() the
	default attribution string so that it doesn't get free()d later.
	This is my bug.

	* pan/xpm/pan_druid.xpm: new watermark for the new user screen.

	* pan/dialogs/dialog-new-user.c: added new information on the new
	user druid's welcome screen.

2001-08-28  Christophe Lambin <clambin@easynet.be>

	(Profiles)

	* pan/base/file-grouplist.c: bumped file format version number to 6.
	We now also store the last used profile for each group. 

	(Bug fixes)

	* pan/message-window.c (remove_signature): handle articles that are
	empty except for a signature.

	* pan/gui.c (send_feedback_cb): use the default profile for email.

	* pan/base/file-grouplist.c: fixed reading back the group's active
	filter name.

2001-08-28  Charles Kerr <charles@rebelbase.com>

	(Profiles)

	* pan/identities/identity-edit-ui.c: added in a default Attribution
	value when creating a new Profile.

	(Code Cleanup: PanCallback)

	* pan/base/pan-callback.h: made the cb return type void, not int.
	* pan/article-actions.c: sync.
	* pan/article-toolbar.c: sync.
	* pan/articlelist.c: sync.
	* pan/gui.c: sync.
	* pan/dialogs/dialog-log-viewer.c: sync.
	* pan/rules/rule-edit-ui.c: sync.

	(Code Cleanup: Menus)

	* pan/gui.c: use gnome menu macros for slightly less code sprawl.
	* pan/articlelist.c: same.
	* pan/message-window.c: same.

	(Code Cleanup: Dead Code Removal)

	* pan/articlelist.c (articlelist_sort_changed): removed dead code.
	* pan/articlelist.c (articlelist_all_download): same.
	* pan/articlelist.c (purge_articles): same.
	* pan/articlelist.c (articlelist_selected_purge_bodies): same.
	* pan/articlelist.c (articlelist_selected_purge_bodies_deep): same.
	* pan/articlelist.c (articlelist_all_purge_bodies): same.
	* pan/articlelist.c (articlelist_all_purge_bodies): same.
	* pan/util.c (test_linkify_text): same.
	* pan/message-window.c: removed appbar code.
	* pan/util.c (check_and_warn_if_version_change): same.

2001-08-28  Charles Kerr <charles@rebelbase.com>

        (Profiles)
	 
	* pan/gui.c (send_feedback_cb): now uses identity-manager
	* pan/smtp.c: same.
			 
	* pan/prefs.c: removed the Posting pieces from here, now that they're
	handled in Christophe's identity module. 

	* pan/util.c (get_host_name): this isn't needed; we use Identities now.
       	* pan/util.c (get_fqdn): same.
       	* pan/util.c (get_default_author_address): same.
       	* pan/util.c (get_default_author_from): same.

	(UI Tweaks)
	
	* pan/prefs.c: added a history pulldown with standard choices for
	external editors & external browsers.
       	* pan/prefs.h: same.

2001-08-27  Christophe Lambin <clambin@easynet.be>

	(Profiles)

	* pan/identities/identity-edit-ui.c: implemented the 'Custom Headers' 
	tab for Profiles: each profile can now hold its own set of custom 
	headers.

	* pan/message-window.c (revoke_identity/apply_identity): set the
	article's custom headers based on the Profile's custom headers.

	* pan/identities/identity-xml.c (write_identity): small bugfix in
	writing the custom headers to the data file.

	* pan/identities/identity.c (identity_find_custom_header_by_name):
	removed obsolete function.

2001-08-27  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/identities/identity-manager.c (construct_identity_from_prefs):
	fix scope problem that prevented creating a new identity from prefs.

	(Tweaks)

	* pan/article-filter-ui.c: added #include to make gcc happy.
	* pan/identities/identity-edit-ui.c: same.
	* pan/identities/identity.c (identity_find_custom_header_by_name):
	commented out unused function.

2001-08-27  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/text.c (text_read_more): fix bug that caused space reading to
	cause small articles to scroll off-window, then back again, before
	reading the next article.

	(External Editor)

	* pan/message-window.c: added External Editor support, finally.
	This is taken lock, stock, and barrel from Sylpheed.

	(Action Shuffling)

	* pan/article-actions.c: moved article deletion functions here from
	articlelist.c.  Added code to remove from acache any deleted article.

	* pan/articlelist.c: when articles are removed, check & see if the
	selected message is one of them.  If so, update the selection and,
	if "read on select" is turned on by the user, read the next message.

2001-08-27  Christophe Lambin <clambin@easynet.be>

	(Identities / Profiles)

	* pan/gui.c: renamed identities to profiles.
	* pan/identities/identity-edit-ui.c: same.
	* pan/identities/identity-ui.c: same.
	* pan/identities/identity-xml.c: same.
	* pan/identities/identity-manager.c: same.

	* pan/pan.c: first time a user starts Pan, we'll now create a default
	Profile, instead of writing the info into gnome_config.
	* pan/dialogs/dialogs-newuser.c: same.
	* pan/identities/identity-manager.c: sync.
	* pan/identities/identity-manager.h: sync.

2001-08-26  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c: fixed the skips-last-thread navigation error.
	Thanks to Adrian von Bidder for reporting this bug.

	(Identities)

	* pan/identities/identity.c (identity_is_valid): new sanity check
	function.

	* pan/identities/identity-edit-ui.c (identity_edit_dialog_get_identity):
	if the identity is incomplete/invalid, return a NULL instead.
	* pan/identities/identity-ui.c (add_dialog_clicked_cb): add check to
	see if identity_edit_dialog_get_identity() returned NULL.

2001-08-26  Christophe Lambin <clambin@easynet.be>

	(Identities)

	* pan/message-window.c: activated Identities.
	* pan/gui.c: same.
	* pan/Makefile.am: same.
	* configure.in: same.

	* pan/identities/identity-edit-ui.c: don't use the identity manager 
	to get the default news & mail identities.
	* pan/identities/identity-ui.c: sync.

	* pan/identities/identity-manager.c: API change for setting defaults.
	* pan/identities/identity-manager.h: sync.
	* pan/identities/identity-ui.c: sync.

	* pan/base/group.c: added 'identity_name' to remember the last 
	identity used to post to that group.
	* pan/base/group.h: same.

2001-08-24  Charles Kerr <charles@rebelbase.com>

	(GUI)

	* pan/gui.c: updated shortcuts & hotkeys; some were in conflict.
	* pan/articlelist.c: same.

	(Bugfix)

	* pan/text.c fontname(): Moved out of the #ifdef GTK_HTML block so
	that Pan will build for test users too.  Thanks to Jed S. Baer for
	reporting this problem.

	(Speedups)

	* pan/base/group.c: replace the group_changed() callback with a
	groups_changed() callback so that we can batch updates of changed
	groups.  This is useful when mass subscribing/unsubscribing during
	importing .newsrc files.

	* pan/base/group.c: replaced group_set_subscribed() with
	groups_set_subscribed().

	* pan/grouplist.c: listen for groups_changed instead of
	group_changed.

2001-08-24  Christophe Lambin <clambin@easynet.be>

	(Bug fixes)

	* pan/articlelist.c: make sure to clear 'unread_children' when
	marking all articles as read. 

	* pan/gui.c: set the correct state on 'use monospace font' on
	startup.

	(Identities)

	* pan/identities/identity-edit-ui.c: code cleanup & memory leaks.
	* pan/gui.c: prepare for integration into the GUI.

2001-08-23  Charles Kerr <charles@rebelbase.com>

	(Show/Hide)

	* pan/gui-paned.c: added code to show/hide various panes based
	on user choice.
	* pan/gui.c: sync.
	* pan/prefs.c: sync.

	(Menu)

	* pan/gui.c: plugged back in the menu sensitive/insensitive code.
	Menus should be good to go now.


2001-08-23  Christophe Lambin <clambin@easynet.be>

	(Identities)

        * pan/identities/*[ch]: added user interface for managing identities

2001-08-23  Charles Kerr <charles@rebelbase.com>

	* configure.in: bumped version number to 0.10.90

	* pan/Makefile.am: tweaks to make automake 1.5 happy

	* pan/text.c (text_get_article_body): fix tab damange.

	* pan/articlelist.c: when user selects an empty group,
	automatically go to download new headers, rather than
	popping up a 'download headers' dialog.

	(Menus)

	* pan/articlelist.c: added accelerators, shortcuts for
	the shiny new menu items.
	* pan/gui.c: same.  Also plugged in everything except
	the three toggle-pane-visible buttons.
	
	(Navigation)

	* pan/articlelist.c: added small correctness checks.

2001-08-23  Charles Kerr <charles@rebelbase.com>

	(Navigation)

	* pan/gui.c: updated the Navigation menu based on user
	suggestions.
	* pan/prefs.c: added 'skip uncached' and 'load on select'
	preferences for the navigation menu.
	* pan/gui.c: sync.
	* pan/articlelist.c: rewrote most of the navigation code.

	(Cleanup)

	* pan/article-filter-ui.c: include libgnomeui.h instead of gnome.h
	* pan/article-find.c: same.
	* pan/article-toolbar.c: same.
	* pan/articlelist.c: same.
	* pan/group-action.c: same.
	* pan/gruop-ui.c: same.
	* pan/grouplist.c: same.
	* pan/gui-headers.c: same.
	* pan/gui-notebook.c: same.
	* pan/message-check-ui.c: same.
	* pan/message-window.c: same.
	* pan/save.c: same.
	* pan/server-ui.c: same.
	* pan/status-item-view.c: same.
	* pan/task-decode.c: same.
	* pan/task-manager.c: same.
	* pan/text.c: same.
	* pan/dialogs/dialog-about.c: same.
	* pan/dialogs/dialog-group-props.c: same.
	* pan/dialogs/dialog-headers.c: same.
	* pan/dialogs/dialog-log-viewer.c: same.
	* pan/dialogs/pan-about.c: same.


2001-08-22  Charles Kerr <charles@rebelbase.com>

	(Group Actions)

	* pan/grouplist.c: removed the group 'action' functions for
	downloading messages/headers, subscribing/unsubscribing,
	deleting groups, and so forth.
	* pan/group-action.c: this is where the grouplist's 'action'
	functions get moved.

	(Menu Update)

	* pan/gui.c: updated Group menu based on feedback from the
	pan-users mailing list.
	* pan/prefs.c: added 'download_bodies_too' handling.
	* pan/gui.c: sync.

	(Bugfixes)

	* pan/task-headers.c (task_headers_run): small bugfix to
	remove glib warning.

	(Cleanup)

	* pan/dialogs/dialog-newuser: code cleanup.

	* pan/articlelist.c: removed debugging statements.

	* pan/grouplist.c: removed unused functions, made functions
	private where appropriate

2001-08-21  Charles Kerr <charles@rebelbase.com>

	(Removing Useless Junk)

	* pan/message-window.c: removed "open article in new window"
	* pan/articlelist.c: sync.
	* pan/task-body.c: sync.
	* pan/text.c: sync.

	(UI: Menus)

	* pan/articlelist.c: a little more menu work.

2001-08-21  Charles Kerr <charles@rebelbase.com>

	(Bug Fix)

	* pan/article-toolbar.c (custom_filter_selected_cb): fix bug
	that caused the articlelist to not be re-filtered when the
	user switched between Author and Subject filtering.

	(UI: Menus)

	* pan/gui.c: started the menu redesign discussed in pan-users.
	added some select-group, select-articles functions, regrouped
	other menu items in a way that makes more sense.
	* pan/gui-notebook.c: removed layout-specific selection code.
	* pan/gui-paned.c: same.
	* pan/server-ui.c: changed search path of where to insert the
	server menu buttons in the main menu.
	* pan/text.c: removed popup menu.

	(UI: Filter History)

	* pan/article-toolbar.c: added a popdown w/history in the
	article subject/author filter.  Thanks to Adam Nevins for
	making this suggestion.
	* pan/grouplist: added a popdown w/history here too.

	(Feature: Use Monospace Font)

	* pan/prefs.c: added new preferences option: whether or
	not to use a monospace font in the body pane.  You can
	configure both fonts in the preferences dialog.
	* pan/text.c: sync.
	* pan/gui.c: sync.

2001-08-20  Christophe Lambin <clambin@easynet.be>

	(bug fix: send pending messages)

	* pan/base/article.c: make sure to save *all* headers to
	'sendlater', so we have all the information to send them later.
	Thanks to T'aZ and Frank Van Damme for reporting problems in
	this area.
	* pan/base/article.h: same.

	(Identities)

        * pan/identities/*[ch]: landed initial data structures into CVS.

2001-08-18  Charles Kerr <charles@rebelbase.com>

	(bug fix: i18n)

	* pan/gmime: updated snapshot of GMime to get the g_mime_charset
	functions.  According to fejj the CODESET patch in 0.10.0 has some
	issues.
	* pan/message-send.c: sync.

	(bug fix: font size in gtkhtml pane)

	* pan/text.c (colorize_html): work around apparent gtkhtml
	font-tags-can't-be-nested brane damage.  Thanks to David Watson
	for reporting this bug.

2001-08-16  Charles Kerr <charles@rebelbase.com>

	Pan 0.10.0 Released!

2001-08-16  Charles Kerr <charles@rebelbase.com>

	(Bug Fix)

	* pan/task-group-count.c: don't update the group article low/high
	from this information, because that screws up counting of which
	articles are new the next time you fetch headers.

2001-08-15  Charles Kerr <charles@rebelbase.com>

	(Bug Fix)

	* pan/rules/rule-ui.c (apply_now_thread): Fix crash that occurred
	when applying rules to selected groups, when no group was loaded in
	the thread view pane.  Thanks to T'aZ for reporting this.

	(Sanity Checks)

	* pan/nntp.c (nntp_article_download): better sanity checks.
	* pan/nntp.c (nntp_download_bodies): same.
	* pan/nntp.c (nntp_cancel): same.
	* pan/article-find.c (compare_article): same.
	* pan/article-actions.c (find_matching_sent_article): same.
	* pan/filters/filter-cached.c (filter_cached_test_articles): same.
	* pan/rules/rule-action.c (rule_action_apply): same.

2001-08-13  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/gui.c: the "Message" menu shortcut key conflicted with
	the "Edit" shortcut.  Thanks to David Oberbeck for reporting
	this bug.

	* pan/articlelist.c (build_article_ctree_recursive): fix bug
	that caused follow-ups to a multipart post to not be added to
	the ctree.  Thanks to Jed S. Baer for reporting this bug.

	* pan/text.c (add_inline_images_mpfunc): go ahead and show
	images even if they're not flagged as "inline".  This is usenet,
	chances are the poster intended for them to be inline anyway.

	(GMime update)

	* gmime: update of gmime-parser.c and gmime-utils.c
	* pan/base/util-mime.c (pan_g_mime_parser_construct_message): sync.

2001-08-10  Charles Kerr <charles@rebelbase.com>

	(Release)

	* README
	* configure.in
	* NEWS
	* TODO
	* CREDITS
	* pan/dialogs/dialog-about.c: Updated for 0.10.0 release

2001-08-09  Christophe Lambin <clambin@easynet.be>

	(Task Manager)

	* pan/task-manager.c: added keyboard shortcuts to cancel and reorder
	tasks.  Thanks to Ryan Daniels for suggesting this.
	
2001-08-08  Christophe Lambin <clambin@easynet.be>

	(Bug fixes)

	* pan/gui-paned.c (gui_paned_construct): allow the grouplist pane
	to shrink beyond its requisition size to account for people running
	under lower resolutions. Thanks to mdew for reporting this problem.

2001-08-06  Charles Kerr <charles@rebelbase.com>

	(Prefs UI)

	* pan/prefs.c: committed patch written by Mike Robinson to make
	the cache tab look a little cleaner.  Thanks!

2001-08-06  Charles Kerr <charles@rebelbase.com>

	(Icons)

	* pan/gui.c: refresh icons for Help|Manual, Help|Feedback
	* pan/articlelist.c: added evo's icons for move/copy-to-folder.
	* pan/article-toolbar.c: added 'glasses' icon for watched threads.

2001-08-06  Stanislav Visnovsky  <visnovsky@nenya.ms.mff.cuni.cz>

	* pan.desktop: Added Slovak messages from Marcel Telka <marcel@telka.sk>

2001-08-06  Stanislav Visnovsky  <visnovsky@nenya.ms.mff.cuni.cz>

	* CREDITS, NEWS: Added credits for translation by Marcel Telka.
	* configure.in: Added sk to ALL_LINGUAS
	* po/sk.po: Added Slovak translation from Marcel Telka <marcel@telka.sk>

2001-08-02  Charles Kerr <charles@rebelbase.com>

        (Posting Headers)

	* pan/message-send.c: added support for pumping the charset from
	nl_langinfo instead of just hardcoding the charset.  Thanks to
	Volodymyr M . Lisivka for the patch.

	* pan/message-window.c: in the "Extra Headers" field on a follow-up,
	try to add the X-Comment-To: header for Fido users.  Thanks again to
	Volodymyr M . Lisivka for the patch.

	(UI Improvements)

	* pan/rules/rule-edit-ui.c: if the rule that the user selects for
	this filter is an empty filter, a warning is given.

2001-07-31  Christophe Lambin <clambin@easynet.be>

	(Bug fixes)

	* pan/prefs.c (prefs_newsrc_page): toggling the 'subscribed groups
	only' and 'backup .newsrc' switches wasn't activating the 'Apply'
	button.

2001-07-31  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/text.c (update_body_pane_nolock): small cleanup.  This seems
	to Make Gtk 1.2's GtkText widget a little happier.

	(UI Changes)

	* pan/base/file-grouplist.c: if we get an unsupported file format,
	ask "are you using an old version of Pan by accident?" because this
	is the typical cause for this error
	* pan/base/file-headers.c: sync.

	* pan/xpm/old_binary_complete.xpm:
	* pan/xpm/old_binary_incomplete.xpm:
	* pan/xpm/binary_complete.xpm:
	* pan/xpm/binary_incomplete.xpm: increase contrast with the new/old
	text article icons to make them easier to notice at-a-glance.

	* pan/xpm/filters.xpm: added a black triangle pointing down to
	indicate that this is a popdown menu button.

	* pan/gui.c: moved "task manager" to the top of the online menu
	to make it easier to find.  Some people still don't know you can
	stop a running task.

2001-07-30  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (articlelist_repopulate): fix array-bounds-write
	error introduced late last week.  Thanks to Adrian von Bidder for
	leading me to this bug.

2001-07-29  Christophe Lambin <clambin@easynet.be>

	(Text Wrapping)

	* pan/prefs.c: new feature to disable wrapping the body of a message 
	when replying. Thanks to Twigboy for suggesting this feature.
	* pan/prefs.h: sync.
	* pan/message-window.c: sync.

2001-07-28  Charles Kerr <charles@rebelbase.com>

	(UI Changes)

	* pan/xpm/old_binary_complete.xpm: new icon.
	* pan/xpm/old_binary_incomplete.xpm: new icon.
	* pan/articlelist.c: sync.

	* pan/prefs.c: changed some of the new features' phrasing at
	Christophe's suggestion.

	(Canned Rules)

	* pan/rules/rule-manager.c: brought into sync with filter-manager
	with the graceful restoring of canned rules that have somehow been
	lost.

2001-07-28  Christophe Lambin <clambin@easynet.be>

	(UI Changes)

	* pan/articlelist.c (articlelist_set_node_style_nolock): implemented
	coloring watched & ignored threads.

	(Bug Fixes)

	* pan/gui-paned.c (gui_paned_construct): Pan wasn't restoring its
	column widths for the article list.
	* pan/gui-notebook.c (gui_notebook_contruct): same.

	* pan/rules/rule-ui.c (apply_now_thread): refresh the article list
	when we manually apply a rule to the active group.
	* pan/rules/rule.c (rule_apply): return the number of articles matched,
	so that callers know whether they need to take some action.
	* pan/rules/rule.h: sync.

2001-07-27  Charles Kerr <charles@rebelbase.com>

	(Rule/Filter Changes)

	* pan/rules/rule-manager.c: replaced "Ignore Bozos" with
	"Delete Bozos".  This way if a bozo posts in an interesting
	thread then we'll still have the interesting thread and only
	the bozo will get thrown out.

2001-07-27  Christophe Lambin <clambin@easynet.be>

	(Filters)

	* pan/article-toolbar.c: new approach to setting custom filters.
	Custom filters can now be switching on and off in one click.

	(Bug Fixes)

	* pan/article-toolbar.c: when switching to custom filters, remove
	the filter phrase, since we're not filtering on that anymore.

	* pan/prefs.c: applying changes would change the font of all
	articles in the active group to bold.

2001-07-27  Charles Kerr <charles@rebelbase.com>

	(UI Changes)

	* pan/text.c: borrowed Sylpheed's "smooth scrolling" for the
	text window on space reading.
	* pan/prefs.c: added prefs to turn smooth scrolling on/off.

	* pan/article-toolbar.c: updated to the new envelope icons.
	* pan/xpm: removed unused xpm files.

2001-07-26  Charles Kerr <charles@rebelbase.com>

	(UI Changes: Colors, Icons, Fonts)

	* pan/article.h: added "new_children" field, mirroring
	"unread_children".  Used in articlelist when boldfacing articles
	that have new replies.
	* pan/article.c: sync.
	* pan/article-thread.c (thread_articles): populate new_children

	* pan/articlelist.c: removed "new children" column
	* pan/articlelist.c: added new icon/color/font scheme for showing
	the user which threads have new replies, which threads have unread
	replies, which articles are new, which articles are read, etc.
	* pan/articlelist.c: added some icons to the articlelist menu
	* pan/prefs.c: sync in color/font settings for thread pane.

	* pan/grouplist.c: changed the "subscribed group" icon.
	* pan/gui.c: sync in the "subscribed group" menu buttons.

	* pan/gui.c: added the unread/total article qty to the titlebar

	* pan/gui.c (widget_set_font): rewritten as pan_widget_set_font()
	* pan/message-window.c: sync.
	* pan/text.c: sync.

	(Better Tracking of New Articles)

	* pan/file-grouplist.c: bumped file format version number to 5.
	The new version stores article_high_old.  This way 'new' articles
	are 'new' until you fetch new headers from that group, EVEN IF
	you quit & restart Pan or leave the group and then come back later.

	(Email Addresses)

	* pan/*: replaced superpimp.org with rebelbase.com

2001-07-25  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/article-toolbar.c (article_toolbar_set_filter): didn't fire
	a `filter changed' event when the toolbar was set to a custom
	filter.  Thanks to Christophe for noticing this.

	(Space Reading)

	* pan/text.c: the happy return of space reading!

	(Read Next/Prev Thread)

	* pan/articlelist.c (articlelist_view_prev_thread): new func.
	* pan/articlelist.c (articlelist_view_next_thread): new func.
	* pan/gui.c (navigate_menu): added buttons for these.

	(Usability)

	* pan/gui.c: added keyboard accelerators to every button in the
	main menu.  Most buttons didn't have one.
	* pan/articlelist.c: same.

	* pan/articlelist.c (articlelist_delete_articles): when we delete
	articles from the articlelist, make sure select the next article.
	This makes deleting articles from the keyboard friendlier.

	(Safety Checks)

	* pan/articlelist.c (articlelist_set_selected_nodes): behave
	gracefully even if an array of NULL nodes gets passed in.

2001-07-24  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/article-list-toolbar-mediator.c: use the `rebuild' variable
	properly to avoid having an articlelist populated twice when a
	group is loaded.

	(Safety Checks)

	* pan/rules/rule.c (rule_apply): log an error if the filter which this
	rule relies on isn't found.  In this case, all articles fail the
	filter.

	* pan/filters/filter.c (filter_remove_failures): in the case that a
	NULL filter is passed in, all articles should be removed.

	* pan/filters/filter-manager.c: By Christophe's suggestion, we now
	gracefully recreate builtin filters if they get deleted accidentally.

2001-07-24  Charles Kerr <charles@rebelbase.com>

	(Code Cleanup: gnksa_generate_message_id)

	* pan/base/gnksa.c (gnksa_generate_message_id): add a millisecond part
	to improve chances of uniqueness.

	* pan/base/gnksa.c (gnksa_generate_message_id_from_email_addr): new
	function that safely extracts a domain from an email address and
	passes it along to gnksa_generate_message_id().  Previously calls to
	gnksa_generate_message_id() did this on their own without any
	error-checking.
	* pan/base/article.c: sync.
	* pan/message-send.c: sync.
	* pan/message-window.c: sync.
	* pan/article-actions.c: sync.

	* pan/tests/test-gnksa.c: added tests for Message-ID generation.

2001-07-23  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/pan-glib-extensions.c (get_next_token_g_str): fixed bug
	that caused Pan to crash when a NULL string was passed in.  Thanks to
	Shawn Lindsay for reporting this bug. 
	* pan/tests/test-gnksa.c: added regression test to exercise
	get_next_token_g_str a little more.

	(Tweaks)

	* pan/article-toolbar.c (create_filter_from_ulong): smarter creating
	of filters from the filter_bits variable.  Fewer filters when
	possible.

2001-07-23  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/filters/filter-aggregate.c: fix bug that resulted in 
	no articles being shown when all filter buttons were selected.

2001-07-22  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/gui-paned.c (gui_paned_construct): fix bug that caused
	the slider to get lost under the buttons at the top of the panes.
	Thanks to Owen Taylor for reporting & fixing this bug.

2001-07-22  Christophe Lambin <clambin@easynet.be>

	(Rules)

	* pan/rules/rule-edit-ui.c: implemented applying rules on a subset 
	of subscribed rules.

	* pan/rules/rule-xml.c: stores scope of each rule (i.e., using
	a wildcard, or a subset of subscribed newsgroups).
	* pan/rules/rules.dtd: sync.

2001-07-21  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/rules/rule-xml.c (create_rule): fix bug that caused
	apply_to_incoming to be set to true even when it was false.

	* pan/rules/rule-edit-ui.c (dialog_close_cb): make sure to
	unregister from the pan_callbacks() that we registered for
	when the dialog was created.

	* pan/thread-watch.c (thread_set_state): make sure the article's
	group gets its articles-dirty flag set.

	* pan/gui.c (rules_cb): ensure that only one rule dialog at a time
	gets popped up from the gui menu.

	* pan/gui.c (filter_cb): ensure that only one rule dialog at a time
	gets popped up from the gui menu.

	(Usability Tweaks)

	* pan/prefs.c: acache_flush_on_exit now defaults to FALSE for new
	users.  Too many people didn't understand where their articles were
	going.

	* pan/gui.c: added a shortcut (ctrl-f) for the filter editor.

	* pan/filter/filter-aggregate.c (filter_aggregate_test_articles):
	return FALSE when no children in the filter, just for safety.

	(Filters & Rules)

	* pan/filters/filter-manager.c: implemented the canned filters: now
	when a new user starts Pan, "Bozos" and "Spam" filters are created.

	* pan/rules/rule-manager.c: implemented the canned rules: now when
	new users start Pan, "Ignore Bozos" and "Ignore Spam" rules are
	created.

	* pan/article-filter-ui.c: new file.  It's a dialog for adding the
	current article to the spam and/or bozo filter in an easy way.
	* pan/articlelist.c: sync.
	* po/POTFILES.in: sync.

	* pan/filters/filter-manager.h: added "bozo_filter_name" global.
	* pan/filters/filter-manager.h: added "spam_filter_name" global.

	* pan/bozo.[ch]
	* pan/bozo-ui.[ch]
	* pan/filters/filter-bozo.[ch]
	* pan/dialogs/bozo-dialog.[ch]: removed obsolete files.  Bozos are
	finally integrated into the Filter/Rule system.
	* pan/gui.c: sync.
	* pan/articlelist.c: sync.
	* pan/rules/rule-action.c: sync.
	* pan/rules/rule-edit-ui.c: sync.
	* pan/rules/rule-xml.c: sync.
	* pan/filters/filter-edit-ui.c: sync.
	* pan/filters/filter-xml.c: sync.
	* po/POTFILES.in: sync.

	(New Internal Utilities)

	* pan/util.c (pan_error_dialog_parented): new function.

2001-07-20  Christophe Lambin <clambin@easynet.be>

	(Filters)

	* pan/article-list-toolbar-mediator.c: save and restore filter
	settings for individual groups.
	* pan/article-toolbar.c: sync.
	* pan/base/group.h: sync.
	* pan/base/group.c: sync.

2001-07-19  Charles Kerr <charles@rebelbase.com>

	(URL Viewing)

	* pan/util.c (pan_url_show): new wrapper around gnome_url_show that
	looks at user's local settings and BROWSER variable before punting
	to gnome_url_show.
	* pan/gui.c (pan_manual_url): sync.
	* pan/gui.c (pan_homepage_url): sync.
	* pan/text.c: (on_link_clicked): sync.
	* pan/prefs.c: added support for editing/saving external_web_browser.

2001-07-18  Charles Kerr <charles@rebelbase.com>

	(Threading)

	* pan/base/article-thread.c (thread_articles): Better threading of
	articles where the parent of a followup's message isn't available
	but one of its ancestors is.

2001-07-18  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/acache.c (acache_init): handle readdir failure without
	crashing -- occurred when the cache directory didn't exist & couldn't
	be created.

	* pan/base/acache.c (acache_shutdown): acache's two PanCallback objects
	weren't freed.

	* pan/base/newsrc-ui.c: fixed a small memory leak in the
	import/export dialog -- the path string wasn't freed.

	* pan/rules/rule-edit-ui.c (filter_to_string_recursive): fix small
	memory leak.  The rule strings weren't freed.

	(Small Improvements)

	* pan/base/util-file.c (pan_make_temp): if the temp directory can't
	be used, fall back to $TMPDIR or just /tmp.

2001-07-18  Christophe Lambin <clambin@easynet.be>

	(Filters)

	* pan/article-toolbar.c: clear the 'use custom filter' toggle
	when we're not using one.

2001-07-17  Charles Kerr <charles@rebelbase.com>

	* pan/base/newsrc-port.c: fixed a small memory leak in newsrc_export;
	lots of code cleanup & added comments.

	* pan/base/pan-glib-extensions.c (pan_strstr): added a NULL-friendly
	version of strstr.  The rest of the code now uses this instead of
	strstr().   Pan was passing NULL to strstr() when the cache disk was
	full.

2001-07-17  Fatih Demir <kabalak@gtranslator.org>

	* .cvsignore, pan/base|filters|rules/.cvsignore:
	Added/extended the cvsignores.

2001-07-16  Charles Kerr <charles@rebelbase.com>

	(Bugfixes)

	* pan/gui.c (widget_set_font_on_realize): fix free-memory-read and
	free-memory-write bug.  This fixes the ever-popular "1z" bug.  Adam
	Huffman should get the credit for this one since he tracked it down
	to the font-setting code.

	* pan/filters/filter-xml.c: make filter_xml_read check the return
	code from xmlParseFile.  Same as yesterday's fix, applied to a
	different potential bug.

	* tests/test-message-check.c: added a test to make sure that Adrian
	von Bidder's followup message doesn't get marked with a "new new
	content" message.  This is just a regression test for the code fixed
	by Christophe yesterday.

	(Filters)

	* pan/base/group.c: free the filter_name string in the group's
	destructor.
	* pan/base/file-grouplist.c: save & restore the filter_name in the
	grouplist file; bumped the file format version to 4.

	(Tweak)

	* pan/configure.in: Tell what version of gnome-libs we're looking for.

	* pan/configure.in: We were looking for libxml >= 1.8.11; this has
	been fixed to look for [1.8.11....2.0.0).  Got this idea from gal.

2001-07-16  Christophe Lambin <clambin@easynet.be>

	(Bugfixes)

	* pan/rules/rule-ui.c: 'Add New' crashed when no filters were
	defined.  Thanks to Jed S. Baer for reporting this problem.

	* pan/rules/rule-xml.c: cleaner way of handling 'no rules'.
	* pan/filters/filter-xml.c: cleaner way of handling 'no filters'.

2001-07-15  Adam Huffman <bloch@verdurin.com>

	(Bugfixes)

	* pan/rules/rule-xml.c: make rule_xml_read check the return code 
	from xmlParseFile. 
	Thanks to Jed S. Baer for reporting this problem.
	
2001-07-15  Christophe Lambin <clambin@easynet.be>

	(Bugfixes)

	* pan/base/message-check.c: under certain conditions, Pan could
	erroneously decide that there's no new content in a posting.
	Thanks to  Adrian von Bidder for reporting this problem.

2001-07-12  Christophe Lambin <clambin@easynet.be>

	(Bugfixes)

	* pan/text.c: improve our handling of an article's References,
	where some newsreaders use multiple spaces to separate MessageIDs.
	Thanks to Adrian von Bidder for reporting this problem.

2001-07-10  Christophe Lambin <clambin@easynet.be>

	(Filters)

	* pan/filters/filter-ui.c: don't delete a filter if there are still
	rules using that filter.
	* pan/rules/rule-manager.c: sync.
	* pan/rules/rule-manager.h: sync.

	* pan/rules/rule-edit-ui.c: set the active filter in the menu.

2001-07-04  Christophe Lambin <clambin@easynet.be>
 
	(Bugfixes)
	 
	* pan/task-headers.c: only update the range of a group once we've
	removed expired articles, so that we can detect whether these
	articles were read or not.
       	* pan/base/file-headers.c: sync.
       	* pan/base/group.c: sync.
       	* pan/base/group.h: sync.
       	* pan/base/newsrc.c: sync.

2001-06-27  Charles Kerr <charles@rebelbase.com>

	(Filters)

	* pan/articlelist.c: in the filtering task description, give the
	name of the filter (if the filter has a name).

	* pan/article-toolbar.c: now handles going from one custom filter
	to another correctly.

	* pan/article-toolbar.c: cleaned up some of the text messages.

	(Bozo Dialog)

	* po/POTFILES.in:
	* pan/gui.c:
	* pan/bozo-ui.c: new file -- added the bozo dialog back in.

	* po/POTFILES.in:
	* pan/dialogs/rules.glade:
	* pan/dialogs/rules_interface.[ch]: 
	* pan/dialogs/rules_callbacks.[ch]: removed dead files.

2001-06-26  Charles Kerr <charles@rebelbase.com>

	* configure.in: halfway updated to autoconf 2.50.  Didn't change to
	configure.ac, as automake's patches seem to not handle it completely.

2001-06-23  Charles Kerr <charles@rebelbase.com>

	(Filters & Rules)

	* pan/rules/rule-ui.c: added "apply to selected groups" button.
	* pan/rules/rule-ui.c: added "apply to subscribed groups" button.
	* pan/rules/rule-xml.c: fix bug in loading rules, to see if the rule
	should be applied to incoming messages or not.
	* pan/rules/rule-edit-ui.c: added "apply to incoming" button.
	* pan/rules/rule-ui.c: added hit ratio column in clist.
	* pan/rules/rule-ui.c: make the edit/remove/apply buttons insensitive
	whenever no rule is selected.
	* pan/filters/filter-ui.c: make the edit/remove buttons insensitive
	whenever no filter is selected.

2001-06-20  Charles Kerr <charles@rebelbase.com>

	(Filters)

	* pan/filters/filter-saved.c: new Filter
	* pan/filters/filter-edit-ui.c: sync.
	* pan/filters/filter-xml.c: sync.

	* pan/article-toolbar.c: sync. Now we can finally plug the
	saved/queued/idle buttons into the rule generator.

2001-06-20  Christophe Lambin <clambin@easynet.be>

	* Remove reference to task's high_priority field where appropriate

	* Posted articles are now added to the front of the queue.

2001-06-20  Charles Kerr <charles@rebelbase.com>

	(Filter Usability)

	* pan/article-toolbar.c: made the way of toggling between custom filters
	and the builtin filter flags a little nicer.

	(Filter Matches - What to Show)

	* pan/articlelist.c:
	* pan/article-list-toolbar-mediator.c:
	* pan/article-toolbar.c: added ability on what articles to show on a
	filter match: article, article+references, article+replies, or entire
	thread.

2001-06-15  Charles Kerr <charles@rebelbase.com>

	(Rules & Filters)

	* pan/article-toolbar.c: more love.

	* pan/rules/rule-xml.c:
	* pan/rules/rule-ui.c:
	* pan/rules/rule-edit-ui.c:
	* pan/rules/rules.dtd: landed new rules code into CVS.  The new rules
	are integrated with the new filters landed last week, yay!

	* pan/pan.c:
	* pan/gui.c: sync.
	* pan/task-headers.c: sync.

2001-06-14  Charles Kerr <charles@rebelbase.com>

	(Filter Memory Management)

	* pan/article-toolbar.c (create_filter_from_ulong): make the resulting
	filter a little smaller.
	* pan/article-toolbar.c (update_custom_menus): fix FMR error.
	* pan/filters/filter-ui.c (filter_dialog_close_cb): fix memory leak.

	(XML Utilities)

	* pan/pan-glib-extensions.c (pan_str_escape):
	* pan/pan-glib-extensions.c (pan_str_unescape): new utility function.
	* pan/test.c (make_safe_for_html): superceded by pan_str_escape
	* pan/filters/filter-xml.c (pan_g_string_append_escaped): now use
	pan_str_escape.

2001-06-13  Charles Kerr <charles@rebelbase.com>

	(Filter Memory Management)

	* pan/filter-xml.c: make sure we unref articles after adding them as
	children to filter_aggregate.
	* pan/article-toolbar.c: same.

	* pan/article-toolbar.c: refer to the filters by name, rather than by
	pointer value, because filters are all copy-by-value and so the
	pointers are not reliable.

        * pan/article-list-toolbar-mediator.c: make sure we unref the filter
	when we're done with it.

2001-06-13  Charles Kerr <charles@rebelbase.com>

	(Author Name Attribution)

	* pan/message-window.c: added Christophe Lambin's patch for %n being
	replaced with the short author name string in the attribution lines.
	* pan/prefs.c: sync.

	(Filters)

	* pan/filters/filter.c (filter_test_articles): new virtual function.
	This lets us test batches of articles recursively in a slightly more
	efficient way.
	* pan/filters/filter-aggregate.c (filter_aggregate_test_articles):
	if there's only one filter in the aggregate, just call
	filter_test_articles() for the aggregate.

	* pan/filters/filter-phrase.c: allow filtering on the Message-ID field.

	* pan/article-toolbar.c: polish, polish, polish.

2001-06-12  Charles Kerr <charles@rebelbase.com>

	(Filters)

	* pan/filters/filter-thread.c: added "neither watched nor ignored"
	state in filter-thread.
	* pan/filters/filter-edit-ui.c: sync.
	* pan/filters/filter-xml.c: sync.

	(Filter UI)

	* pan/article-toolbar.c: more love.  About 90% ready.
	The traditional FILTER_STATE filters are faster; you can edit
	filters from the cascading menu; the code's been tidied up some more.

	* pan/articlelist.c: emit a status message telling the user when the
	articles are being filtered.  This is as much for my benifit as the
	user's: this is a useful way of seeing how long filtering takes.

	(Dialogs)

	* pan/gui.c (filter_cb): parent the dialog before showing it.
	* pan/dialogs/rules_callbacks.c (dialog_rules): same.
	* pan/dialogs/rules_callbacks.c (dialog_edit_rule): same.

	(Cleanup)

	* pan/acache.c: use the acache_flush_on_exit global instead of using
	gnome_config.

2001-06-10  Charles Kerr <charles@rebelbase.com>

	* pan/filters/*[ch]: landed filters into CVS.

2001-06-08  Charles Kerr <charles@rebelbase.com>

	* pan/group.h (group_chunk_string): added boolean specifying whether
	or not to try to share the string.  Common strings such as author name,
	Subject, References should be shared, but strings unique in the group
	such as Message-ID or Xref shouldn't be.

	* pan/article.c (article_set_header): the HeaderAction argument now has
	two possible values: DO_CHUNK and DO_CHUNK_SHARE, which decide how to
	call group_chunk_string().  The old behavior of sharing all strings
	added unneeded overhead for the group's GStringChunk.
	* pan/gui.c:
	* pan/nntp.c:
	* pan/message-window.c: sync.

	(Message IDs)

	* pan/identities/identity.[ch]: added a field to hold a custom fqdn
	for Message ID generation. 
	* pan/identities/identity-xml.c: sync.
	* pan/identities/identity-edit-ui.c: sync.

	* pan/message-window.c (populate_article_from_mw): if the selected
	profile has a fqdn, use it to generate the MessageID.

	(Bug Fixes)

	* pan/prefs.c (prefs_apply_cb): fixed a crash when trying to set
	custom foreground and/or background colors. This seems to be related
	to some GTK themes causing gtk_rc_get_style() to return NULL.
	Thanks to T'Az and Krishna Naik for reporting this problem.

	* pan/prefs.c: fixed some issues with yesterday's commits.

2001-12-11  Charles Kerr <charles@rebelbase.com>

	(UI Tweaks)

	* pan/prefs.c: added a help dialog to show the date format strings.
	* pan/prefs.c: moved "Layout" to the "Display" section
	* pan/prefs.c: moved News/Mail to "Servers - News" and "Servers - Mail"

        * pan/message-window.c: Clicking on the "Use External Editor" in the
	message composer now desensitizes the entire message composer window
	until the external editor has been closed.  This fixes all kinds of
	possible issues such as pressing the edit button twice, or hitting
	send while the external editor's still open, etc.

2001-12-09  Charles Kerr <charles@rebelbase.com>

	(New/Unread/Old/Read)

	Committed first draft of the changes described on pan-users.

2001-12-09  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/message-window.c (populate_post_info_pane): if Followup-To is
	set to 'poster', only send the article as an email. Thanks to 
	Christian Lohmaier for reporting this.

2001-12-07  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/task-headers.c: after deleting all headers, 'Get New Headers'
	would download an old header.

2001-12-06  Christophe Lambin <clambin@easynet.be>

	(UI Tweaks)

	* pan/prefs.c: modified the layout somewhat to make the Preferences
	window smaller. It now fits on a screen running at 800x600.

2001-12-06  Charles Kerr <charles@rebelbase.com>

	(GUI Headers)

	* pan/base/article.h (article_get_newsreader): removed unused func.
	* pan/base/article.h (article_get_header_run_hash): new function.
	* pan/base/run.[ch]: new module.
	* pan/gui-headers.c: use article_get_header_run_hash.

	(Strings on the Stack)

	* pan/base/pan-glib-extensions.h: pan_strdup_a: new alloca macro.
	* pan/base/pan-glib-extensions.h: pan_strndup_a: same.

2001-12-06  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/article.h: the replaced 'supercede' with 'supersede'.
	Apparently my "fix" for 0.11.1 was wrong.  son-of-1036 is explicit
	that there is no 'c' in supersede. :)

	(Usability)

	* pan/base/acache.c (acache_init): log a warning if the cache
	directory can't be read.  

	* pan/base/util-file.c (directory_check): log a warning if the
	directory can't be found and/or created.

2001-12-05  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/file-grouplist.c: fixed bug that caused upgrading from
	really old versions of Pan difficult.  Thanks to Brandon McCombs
	for reporting this bug.

2001-12-04  Charles Kerr <charles@rebelbase.com>

	(Housekeeping)

	* NEWS:
	* README:
	* configure.in: Bump version number to 0.11.1.

	(Bug Fixes)

	* pan/queue.c: fix a handful of mutex-related bugs.

2001-12-04  Duarte Loreto <happyguy_pt@hotmail.com>

        * configure.in: Updated to add new translation to Portuguese (pt) in ALL_LINGUAS.
        * NEWS: added pt translation to New features (as told in po/README_TRANSLATORS.txt)
        * CREDITS: Added pt translation to credits for 0.11.1

2001-11-03  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/util-file.c (check_directory): make sure there's always
	a G_DIR_SEPARATOR at the end of the path before we call mkdir.
	Apparently Mac OS X hates the trailing /.  Thanks to Max Horn
	for reporting this.

	* pan/test (Makefile.am): explicitly link against $(INTLLIBS).
	Thanks to Max Horn for reporting this.

	* pan/all-over-the-place: changed invocations of ctype's
	isxxx(*pch) from isxxx((int)*pch) to the correct
	isxxx((guchar)*pch).  Thanks to Morten Welinder for reporting
	this bug.

2001-12-02  Wang Jian  <lark@linux.net.cn>

	* configure.in(ALL_LINGUAS): Added zh_CN for Simplified Chinese.

2001-11-28  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/article.h (HEADER_SUPERSEDES): s/supersede/supercede/.
	* pan/article-actions.c: same

2001-11-27  Christophe Lambin <clambin@easynet.be>

	(GUI Headers)

	* pan/gui-headers.c (gui_headers_set_nolock): added the newsreader as
	one of the displayable headers. This basically looks for the article's
	'User Agent', 'X-Newsreader' or 'X-mailer' header and displays the
	value.  Thanks to Jim22 for requesting this feature.
	* pan/gui-headers.h: same.
	* pan/prefs.c (prefs_text_page): same.

	* pan/base/article.c (article_get_newsreader): new function for
	easily extracting the above.
	* pan/base/article.h: same.

2001-11-27  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/gnksa.c (gmtime_r): fix typo that caused Pan to not
	compile on Mac OS X.  Thanks to Max Horn for reporting this.

	(UI Tweaks)

	* pan/articlelist.c: the left/right arrow keys now collapse/expand
	the currently-selected threads.  Thanks to Chris Petersen and
	Martin Wulffeld for suggesting this.

	(Housekeeping)

	* configure.in: bumped version number.
	* README: same.
	* Makefile.am: added depcomp because automake is only human.

2001-11-26  Charles Kerr <charles@rebelbase.com>

	(Acache Tweaks)

	* pan/base/acache.c: changed the lookup table's key from filename to
	Message-Id.  We always have the Message-Id, but the filename is
	derived, so this saves needless derivation cycles.

	* pan/base/acache.c: removed "filename" from acache's internal tables.
	The filename was only used when removing an article from the cache,
	which is uncommon enough that we're better off deriving the filename
	at that point instead of using memory & cycles to keep it all the time.

	(Small Bugfixes)

	* pan/base/article.c (articles_set_read): add missing debug_exit().

	* pan/base/decode.c: cast to avoid Solaris warning.

	* pan/gui.c (navigation_menu): Fix typo.  Thanks to Nam SungHyun for
	reporting this bug.

2001-11-25  Charles Kerr <charles@rebelbase.com>

	(Paranoia)

	* pan/base/article.c (article_set_from_raw_message): new safety checks.
	* pan/base/article.c (set_from_raw_init_header_gmhfunc): same.

	* pan/base/gnksa.c (generate_message_id_from_email_addr): added
	g_warning if an invalid email address is passed in.

	(Random Tweaks)

	* pan/base/pan-glib-extensions.c (get_next_token_range): renamed to
	the more-accurately-named get_next_token_run, 

2001-11-24  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (fire_group_chnaged): since this is an idle func,
	we need to return 0 here or the function will keep being fired
	forever, pegging the CPU when the user hits "empty group".

	* pan/message-send.c: when sending articles, make sure to ref/unref
	PAN_SENT's articles, because the article being sent is placed into
	that folder, and the article needs to stay alive for the entire span
	of the task.

	* pan/base/article.c (article_is_valid): the group-has-a-memchunk
	check was not valid for folders, which prevented articles from being
	posted correctly.  Moved the group check up to a call to
	group_is_valid(), which is a better place to keep group's
	implementation details.

	* pan/base/group.c (group_is_valid): if the group isn't a folder and
	the article refcount is >0, make sure _article_chunk!=NULL.

2001-11-24  Christophe Lambin <clambin@easynet.be>

	(Bug Fix)

	* pan/base/newsrc-port.c (newsrc_import): fixed segfault when the
	newsrc file exists, but Pan is unable to read it (e.g. permissions).
	Thanks to Joris Lambrecht for reporting this bug.
	
2001-11-23  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/article-thread.c (check_multipart_articles): now parts 2..n
	are marked MULIPART_ALL or MULTIPART_SOME.  Previously only the first
	article was marked this way, which caused troubles when filters looked
	at individual articles to see if they were complete/incomplete.

2001-11-22  Charles Kerr <charles@rebelbase.com>

	(Random Tweaks)

	* pan/base/util-mime.c (pan_header_is_8bit_encoded): new function.
	* pan/base/article.c (article_set_author_from_header_impl): remove
	at least six malloc/free calls per call.
	* pan/nntp.c (nntp_download_headers): remove at least four malloc/free
	calls per header downloaded.
	* pan/nntp.c (nntp_article_downloaded): remove at least nine
	malloc/free calls per article body.  Yes, I know this is unimportant,
	I just don't want to start anything big before family gets here. :)

2001-11-21  Charles Kerr <charles@rebelbase.com>

	(Build Fix)

	* pan/thread-watch.c (thread_set_state): renamed pan_thread_set_state
	to avoid name collision with Mac OS X.
	* pan/thread-watch.c (thread_get_state): renamed pan_thread_get_state
	to avoid name collision with Mac OS X.
	* pan/articlelist.c: sync.
	* pan/filters/filter-thread.c: sync.
	* pan/rules/rule-action.c: sync.

	* configure.in: added gmtime_r and localtime_r checks.
	* pan/base/gnksa.c:  If gmtime_r or localtime_r aren't available,
	define them here.  Thanks to Max Horn for these Mac OS X fixes.

	(Random Tweaks)

	* pan/base/pan-callback.c: try to handle the steady state without any
	heap memory allocation or mutexes.

2001-11-21  Christophe Lambin <clambin@easynet.be>

	(Bug Fix)

	* pan/filters/filter-xml.c (populate_top): fixed a bug that caused 
	non-visible filters to reappear after restarting Pan. Thanks to
	Douglas Bollinger for reporting this.

2001-11-20  Christophe Lambin <clambin@easynet.be>

	(Filters)

	* pan/base/file-grouplist.c (read_group_data/write_groups): bumped up 
	file version to 8. We now also save the group's filter_show field 
	('Which Articles to Show').  Thanks to Uli Wachowitz for suggesting 
	this.

2001-11-20  Charles Kerr <charles@rebelbase.com>

        * If some bozo includes a windows pathname in the filename of an
          attachment, strip out that pathname.

2001-11-19  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

        * pan/articlelist.c (headers_fetched) fixed 0.11.0 bug that, when an
	empty group was activated, Pan would go to the server twice for new
	headers instead of once.  In addition to pointless load, if you were
	really unlucky there would be one or two new articles in the second
	load, marking the ones from the first run and leaving you scratching
	your head "how did I just download a batch of old articles from a
	new group?" :)

	(Usability)

	* pan/task-save.c (task_save_run):  Don't fail the task if we fail to
	decode an article that appears to not have attachments: the user may
	have left the "save attachment" button on in the "save article" dialog
	and shouldn't be penalized for that.

	(Safety Checks)

	* pan/base/article.c: added more sanity checks to check the validity
	of arguments passed in to artcile functions.

2001-11-18  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/save-ui.c: commit bugfix patch provided by Joseph Turian.

	* pan/task-save.c: fix a memory leak reported by Rick at mynet.dhs.org.

2001-11-17  Charles Kerr <charles@rebelbase.com>

	(Fixes for Terrible Bugs)

	* pan/base/file-headers.c (file_headers_save_group):
	* pan/base/file-headers.c (file_headers_save_folder): call
	directory_check() to ensure that the directory exists before
	we open the save file.
	* pan/base/file-headers.c (file_headers_save_group):
	* pan/base/file-headers.c (file_headers_save_folder): changed the
	return val from void to boolean so that the caller can know if the
	save failed.
	* pan/base/file-headers.c (file_headers_save_group):
	* pan/base/file-headers.c (file_headers_save_folder): log an error
	to the Pan Error Log if the save failed.
	* pan/base/util-file.c (pan_rename): return a gboolean, instead
	of a void, so that the caller can know if the rename was successful
	or not and take appropriate actions.
	* pan/base/util-file.h: sync.

	(Save State)

	* pan/base/server.c (server_add_groups): save the server's grouplist
	to disk whenever groups are added.
	* pan/base/serverlist.c (server_folders_load): when adding Pan's
	builtin folders, make sure to batch them up into a single call to
	server_add_groups() s.t. the grouplist is only saved once.  All other
	callers already batched the added groups...
	* tests/test-newsrc.c:
	* tests/test-decode.c:
	* tests/test-message-check.c: turn off autosaving off in places of
	regression tests where it makes no sense.

	(Usability)

	* pan/task-grouplist.c: make some status messages clearer.
	* pan/task-headers.c: same.


2001-11-16  Charles Kerr <charles@rebelbase.com>

	(Clear Groups)

	* pan/group-ui.c (group_empty_dialog): reworked this to handle
	multiple groups in a single dialog, instead of having one dialog
	per group.  Thanks to Vadim Berezniker and Jim Henderson for
	suggesting this feature.

2001-11-15  Christophe Lambin <clambin@easynet.be>

	(Bug Fix)

	* pan/queue.c (queue_run_thread): when a task fails, give the queue
	a nudge. This should fix the stalled queue problem reported by
	Alex V Flinsch, Alan Young and Gabi Davar.

2001-11-14  Charles Kerr <charles@rebelbase.com>

	(More Build Fixes courtesy of Alan Young)

	* pan/articlelist.c: changed some "g*array->len > 0" to
	"g*array->len > 0u" to make Compaq's C compiler happy.
	* pan/text.c: same.

	* pan/base/Makefile.am: add GTK_CFLAGS to INCLUDES.
	* pan/filters/Makefile.am: same.
	* pan/identities/Makefile.am: same.
	* pan/rules/Makefile.am: same.

2001-11-14  Charles Kerr <charles@rebelbase.com>

	(Pedantic)

	* pan/base/argset.h: the function passed to pthread_create()
	needs to return a void*, not void.
	* pan/rules/rule-ui.c: worker thread func return a void*, not void.
	* pan/grouplist.c: same.
	* pan/queue.c: same.

	* pan/base/decode.c: changed some C++-style comments to C-style.
	* pan/article-toolbar.c: same.
	* pan/gui.c: same.

	* pan/base/article.c: added explicit uchar/char casts.
	* pan/base/util-mime.c: same.
	* pan/filters/filter-xml.c: same.
	* pan/filters/rule-xml.c: same.
	* pan/filters/identity-xml.c: same.
	* pan/nntp.c: same.
	* pan/text.c: same.

	* pan/base/article.h: removed a comma from end of an enum list.
	* pan/base/article-thread.h: same.
	* pan/base/message-check.h: same.
	* pan/filters/filter-phrase.h: same.

	* pan/articlelist.c: "static struct arrayname [];" isn't legal --
	  remove the static keyword to make ansi happy.
	* pan/text.c: same.

2001-11-13  Charles Kerr <charles@rebelbase.com>

	(Layout)

	* pan/gui.c (gui_shutdown): fix bug that incorrectly saved the
	hpaned/vpaned values for layout type 5 (3 vertically stacked panes).
	Thanks to Douglas Bollinger and Erik W. Hanson for reporting this bug.

	* pan/gui.c (toggle_pane_visiblity): only rebuild the layout if the
	new state != the old state.  This prevents the layout from being
	rebuilt three unnecessary times during startup when initializing the
	menu widgets.
	* pan/gui-paned.c: sync.

	(GUI Paned/Notebook)

	* pan/gui.c: rewrote all the crufty gui-paned/gui-notebook code.  Now
	keyboard activation is be more consistent between the two layouts.
	* pan/gui-notebook.c: same.
	* pan/gui-paned.c: same.

	(Thread/Unthread Header Pane)

	* pan/prefs.c (header_pane_is_threaded): new variable for prefs_init().
	* pan/gui.c: save header_pane_is_threaded to gnome_config() on exit.
	* pan/articlelist.c: use header_pane_is_threaded.  This solves a bug
	with having to press the thread/unthread button twice before it would
	work properly.  Thanks to Jed Baer for reporting this bug.

	(Grouplist Usability Changes)

	* pan/grouplist.c: remembering the last Pan session's group_mode is
	not really in sync with what would be most usable -- almost always
	people want to see "subscribed" for daily use, and then look at "all"
	if want to subscribe to a group.  The new scheme uses this fact to
	decide the mode: when bootstrapping/switching to a server, if the
	server has subscribed groups, we set the view to "subscribed".
	Otherwise it's likely the user wants to subscribe to some, so we set
	the view to "all", and if there are no groups, also show the
	"download group list?" dialog.

	* pan/grouplist.c: whenever loading a server and we can't find any
	groups for that server, show the "download group list?" dialog.
	Previously this was only done the first time, for new users.

	(Plumbing)

	* pan/base/file-grouplist.c (file_grouplist_exists): now returns a
	ServerGroupsType instead of a bool so that you can tell what _type_
	of groups exist.

	* pan/base/file-grouplist.c (save_groups_to_file): if no articles
	exist in a grouptype, unlink the corresponding .dat, .idx files.

	* pan/base/group.c (groups_set_subscribed): when the subscribed
	state of groups change, save the affected grouplists for safekeeping.

2001-11-12  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (articlelist_selection_changed_cb): ack,
	we were leaking a GPtrArray each time we read an article!

	(Usability)

	* pan/gui.c (view_menu): renamed the 'zoom' functions' menu text to
	to something more easily understood.  Thanks to Cory Dodt for this
	suggestion.

	* pan/article-toolbar.c (article_toolbar_new): added "filter by
	message-id" to the article toolbar's filter.

	* pan/gui.c (gui_key_press_cb): shift-delete will delete threads
	again now.  This went away for awhile for no apparent reason.  Thanks
	to Kevin (kevlinux) for bringing this to my atttention.

	* pan/dialogs/dialog-newuser.c (get_default_news_server):  If the
	environment variable NNTPSERVER isn't set, get the host's domain and
	prepend it with "news.".  This should correctly guess the news server
	for most .edu sites and domestic cable modem users.

2001-11-11  Charles Kerr <charles@rebelbase.com>

	(Usability)

	* pan/gui-paned.c (gui_paned_enter_clicked_nolock): if >1 article
	is selected when Return is pressed, download & show the first article
	as before, but also download articles 2..n in a second task.  Thanks
	to Cory Dodt for suggesting this improvement.

	* pan/base/article.c (article_get_unique_threads): the return array
	should maintain the sort order of the incoming articles, instead
	of in an unordered bag.  For example when the user hits "Download
	Threads", one wants to see the articles download from the top article
	on down, rather than in a random pattern.  Thanks to Cory Dodt for
	suggesting this improvement.

	(Bug Fixes)

	* pan/base/acache.c (acache_set_message): fix bug that caused the
	article cache to grow larger than the user-specified maximum.
	Thanks to Muralito and Alan Young for reporting this bug.

	* pan/base/article.c (article_get_thread_message_id): return the right
	message-id even if the Article passed in has a broken References:
	header.  We do this by walking up the article hierarchy (because
	article_thread does a pretty good job of threading even without
	References) before looking at the References: header.  This fixes a
	bug that kept some threads from being Watched or Ignored properly
	when the user hit Watch or Ignore.  Thanks to David Watson for
	reporting this bug.

2001-11-10  Charles Kerr <charles@rebelbase.com>

	(Usability)

	* pan/base/decode.c: if the decode file can't be created for whatever
	reason (for example, the specified directory isn't writable) then send
	an error to the Pan log and fail the task.  Thanks to Sebastien Leclair
	for suggesting this.
	* pan/task-save.c: sync.
	* pan/base/util-file.c (directory_check): change retval from void to a
	gboolean that tells whether or not the specified directory exists.

2001-11-09  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/pan.c: moved PAN_SENT and PAN_SENDLATER to pan/base/serverlist.c,
	so that they will be defined in the lowest-level library in which
	they're used.  This fixes a compile error reported by Francesco Lamonica
	and Gavi Dabar.

	(GUI Tweaks)

	* pan/gui.c: replaced "Get Specific Articles..." with
	"Download Articles..." by popular demand from Jake Zhukov and
	Alex Flinsch.

	(Save Setup)

	* pan/base/save-setup.c: removed -- it's too risky in a threaded app.
	* pan/articlelist.c (clear_group_nolock): save here instead.
	* pan/articlelist.c (set_group_mainthread_end): and here.
	* pan/task-headers.c (task_headers_run): and here.
	* pan/base/group.c (group_unref_articles): and here.

	* pan/file-headers.c (file_headers_save): added a mutex s.t. only one
	group can be saved at a time.  This prevents the same group from being
	saved twice at the same time and seems to make Pan run a little more
	smoothly too.

	(Watch / Ignore Threads)

	* pan/articlelist.c (articlelist_selected_thread_watch_nolock):
	faster watching of multiple threads.

	* pan/articlelist.c (articlelist_selected_thread_watch_nolock):
	if two articles in a thread were selected when 'watch' was hit,
	the thread wasn't watched (actually, it was watched, then unwatched
	when the second article was checked).

2001-11-08  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/save-setup.c (save_setup_impl): put a mutex in here so
	that we don't get two threads saving the setup concurrently.

	* pan/group.c (group_unref_articles): fix thread issue with calling
	save_setup().  This was causing all kinds of problems yesterday.

	* pan/group.c (group_destructor): correct the order in which items
	are freed.  This fixes a barrelful of FMR, FMW, ABR, and ABW errors.

	* pan/text.c (text_pane_popup_menu): added "GNOMEUIINFO_END" to
	the end of this array.  Fixes ABR and ABW errors.

	* pan/acache.c (acache_set_message): Fix memory leak.

	* pan/prefs.c (prefs_servers_changed): If the server list has changed,
	make sure it's saved to disk for posterity when user hits Apply or OK.

	(Testing)

	* pan/base/article.c (article_is_valid): add more tests.
	* pan/base/article.c (articles_are_valid): new convenience function
	for sanity checks.
	* pan/base/group.c: sync.
	* pan/base/article-thread.c: sync.

	(Save Setup)

	* pan/save-setup.c: save_setup now comes in two flavors,
	save_setup_now() and save_setup_idle(), to distinguish priority.

2001-11-07  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/group.c: call save_setup() whenever a group's article
	refcount goes to zero.  This is 'crash insurance' was discussed on
	pan-users.

	* pan/nntp.c (nntp_download_headers): don't call
        group_set_articles_dirty() here -- that should be (and is) done
	when group_add_articles() in called with the headers generated
	by nntp_download_headers().

	* pan/base/log.c: added a thread mutex to control access to the
	Pan log.  This solves a bug reported by Jed Baer where one thread
	was halfway through shutting down the Pan log when another thread
	logged a shutdown message and confused everything.

	(Menu Changes)

	* pan/gui.c: moved "Delete all Articles" to "Empty ..." next to
	"Delete" in the group menu.  Thanks to jzhukov for suggesting that
	this be moved.

	* pan/articlelist.c: added "Delete All" next to "Delete" and
	"Delete Thread" in the article menu & popup menu.  Thanks to
	jzhukov for suggesting that this be moved.
      
2001-11-06  Charles Kerr <charles@rebelbase.com>

	(Widen the filter_bits to hold the new "by me/by others")

	* pan/base/group.h: (filter_bits): widened from guint16 to guint32

	* pan/base/file-grouplist.c: bumped format version number to 7.  The
	only change is that if the loaded version <= 6, we turn on the widened
	filter bits with |= 0xFFFF8000 to make sure the "by me" and "by others"
	bits are turned on by default.

2001-11-06  Christophe Lambin <clambin@easynet.be>

	(Filters - Articles by me)

	* pan/article-toolbar.c: added new filter to the toolbar.
	* pan/article-list-toolbar-mediator.c: sync.
	* pan/base/group.h: sync.

	* pan/xpm/by_me.xpm: new icon for toolbar filter.
	* pan/xpm/by_others.xpm: same.

	* pan/filters/filter.dtd: added new filter definition.

2001-11-05  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/group.c (group_ref_articles): only call
	group_set_article_qty if we've just loaded headers from disk and
	therefore have idea to believe that the article qty has changed.
	This prevents a gui double lock in rare circumstances.

	* pan/base/group.c (group_thread_if_needed): put the mutex lock
	before the (if_article_threading_dirty) check instead of after,
	so that multiple threads don't hit that and both, hitting the
	dirty flag, think that they need to thread the articles.  Threading
	once in enough.

	* pan/base/article-thread.c (thread_articles): slightly faster
	threading of articles.

2001-11-05  Christophe Lambin <clambin@easynet.be>

	(Filters)

	* pan/filters/filter-mine.[ch]: implemented a new filter to
	automatically select articles posted by the user. This is done
	by cross-referencing the article's author with those in the user's
	Profile(s).

	* pan/filters/filter-edit-ui.c: sync.
	* pan/filters/filter-xml.c: sync.
	* pan/filters/Makefile.am: sync.

2001-11-03  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c: flag/unflag thread didn't work properly.
	Thanks to Peter Borgmann for reporting this bug.

	* pan/nntp.c: when collapsing a double period as described
	in RFC977 2.4.1, only erase one of the damn periods instead
	of both of them.  Thanks to Thomas K. Gamble for reporting
	this embarassing bug.

2001-11-02  Charles Kerr <charles@rebelbase.com>

	Pan 0.11.0 Released!

2001-10-31  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/group.c: silenced three glib warnings.  Thanks to
	David Oberbeck for reporting this bug.

2001-10-30  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/message-window.c (create_body_pane_nolock): ensure that
	control+return is a shortcut for "Send Now" as in Agent & Gravity.
	Thanks to Himanshu J. Gohel for reporting this bug.

2001-10-29  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/article-toolbar.c (article_toolbar_set_filter): when the
	caller sets a new filter in the toolbar, make sure to update
	the GnomeEntry search field to reflect the new filter.

	* pan/base/util-wrap.c (rot13): Fixed bug in the rot13 code that
	truncated lines when they encountered characters like , , or .
       	Thanks to Nightshade for reporting this bug.
	* pan/tests/test-wrap.c: added regression test to ensure that 
	characters like , , or  don't truncate lines.

2001-10-26  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/artlclelist.c: Fixed 0.10.0.93 that didn't properly show
	new articles added to the active group.

	(Housekeeping)

	* po/et.po: added new Estonian translation by Tivo Leedjrv.

	* gmime: sync with fejj's code.

2001-10-25  Christophe Lambin <clambin@easynet.be>

	(Bugfix)

	* pan/queue.c (queue_run_thread): fixed thread bug that caused
	tasks to get stuck in 'queued' state. Thanks to Frederik 
	Vanrenterghem, Jed S. Baer and Alan Young for reporting this.

2001-10-25  Charles Kerr <charles@rebelbase.com>

	(FreeBSD Build Fixes)

	* pan/filters/filter-phrase.h: #include <sys/types.h> before
	#include <regex.h> to compile under FreeBSD.  Thanks to Christian
	Kuhtz for this suggestion.

	* pan/text.c: removed #include <alloca.h>, which doesn't exist on
	FreeBSD -- instead, just prototype it directoy.  Thanks to
	Christian Kuhtz for this suggestion.

	* pan/base/gnksa.c: use gettimeofday() instead of ftime().  Thanks
	to Christian Kuhtz for this suggestion.

2001-10-22  Charles Kerr <charles@rebelbase.com>

	(Popup Menus)

	* pan/articlelist.c: added popup menus back in.
	* pan/text.c: same.

2001-10-22  Christophe Lambin <clambin@easynet.be>

	(bye bye libESMTP)

	* pan/smtp.c: restored the pre-libESMTP version of SMTP support.
	LibESMTP definitely seems like a good candidate for enhancing Pan's 
	support for SMTP. However, at this time there remain too many
	packaging issues. Too bad. Maybe later.
	* pan/Makefile.am: same.
	* configure.in: same.
	* pan.spec.in: same.
	* acconfig.h: same.

2001-10-21  Charles Kerr <charles@rebelbase.com>

	(UI Tweaks)

	* pan/prefs.c: added a third quoted depth ">>>" color.
	* pan/text.c: sync.

2001-10-21  Christophe Lambin <clambin@easynet.be>

	(Profiles)

	* pan/message-window.c: implemented a PanCallback to keep in sync
	with the Profiles while writing an article. This fixes a segfault
	when we remove an profile, while writing an article using that
	profile. Thanks to lduperval for reporting this bug.

	* pan/identities/identities-manager.[ch]: same.

2001-10-20  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (articlelist_set_sort_type): when the sort type
	changes, make sure the change is propagated back into the group's
	settings where it will be remembered.  Thanks to Alen Williams for
	reporting this bug.

	* pan/message-send.c (build_nntp_header): Use GMime's InternetAddress
	object when composing the From: header so that we get the right
	encoding.  Thanks to Julien Plissonneau Duquene for reporting
	this bug.  (TODO: migrate the entire posting to GMimeMessage)

	* pan/tests: forgot to sync the tests with the new two-argument
	group_new() function.  Thanks to Laurent Duperval for reporting
	this bug.

	(Delete/Mark Read Crossposts)

	* pan/base/article.c (article_xref_foreach): now takes a
	ServerGroupsType argument s.t. we only traverse groups in
	that set.
	* pan/base/article.c (articles_set_read): only also mark read
	crossposts in subscribed groups.  It's not worth the load to
	mark in groups that the user will never look at.
	* pan/article-actions.c (delete_articles): when deleting an
	article, only delete crossposts in subscribed groups.  Same
	reason.
	* pan/base/server.c (server_get_named_group_impl): take an
	argument of ServerGroupsType so that we know which types to
	look through for this group.
	* pan/base/server.c (server_has_group_in_type): new function.

	(Speedups)

	* pan/base/article.c (article_set_header_impl): if we're initing
	this header then we know there's no current value for the header,
	so don't bother calling article_remove_header() first.

2001-10-19  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/message-window.c: fixed a couple of cases where Articles
	were still being pan_object_{un}ref()ed, even though Article is
	no longer a PanObject.  C++ would've been helpful here. :)

	(More snubbing of PanObject)

	* pan/base/group.[ch]: Group's no longer a PanObject either.  Its
	memory management is controlled by the parent Server object, just
	as Groups control their Article objects.
	* pan/articlelist.c: sync.

2001-10-18  Charles Kerr <charles@rebelbase.com>

	Pan 0.10.0.93 Released!

2001-10-17  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/gui-notebook.c:  Fix crash-on-zoomed-startup bug.  Thanks to
	Leo Lipelis for reporting this bug.

	* gmime/gmime-charset.c:  Upgrade this file to get a fix for Debian
	and Solaris charsets.  Thanks to Jeffrey Stedfast for writing GMime.

	(Dethreading)

	* pan/grouplist.c: Make grouplist's updates operate in the mainthread
	too.  Similar to earlier updates to text.c and articlelist.c.

	(Code Cleanup)

	* pan/article-toolbar.c: removed unnecessary #includes.
	* pan/sockets.c: same.

2001-10-17  Christophe Lambin <clambin@easynet.be>

	(libESMTP)

	* configure.in: now using libESMTP 0.8.6.
	* pan.spec.in: same.

2001-10-17  Charles Kerr <charles@rebelbase.com>

	(Bug "Fixes")

	* pan/base/decode.c: shut up compiler warning.
	* pan/base/util-mime.c: same.

	* pan/status-item-view: try harder to make this threadsafe.

2001-10-15  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/queue.c (queue_mainloop): patch for signals-get-lost bug
	reported by Himanshu J. Gohel, Jed S. Baer, John LeMay, and
	Douglas Kilpatrick.

2001-10-13  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/smtp.c: #include <pan/base/log.h>.  Ooops.

	* pan/articlelist.c (articlelist_set_group_nolock): if the user has
	selected to fetch the group's new headers on load, make sure we do
	that.

	* pan/queue.c (queue_run_what_we_can): fixed thread bug that caused
	some tasks to get stuck in an "Abort" state even if they completed 
	successfully.

	* pan/task-save.c (task_save_run): fix small but ugly FMR/FUM bug.

	(UI Tweaks)

	* pan/task-headers.c: made some of the status messages a little
	shorter so that they'll fit in the progressbar better.

2001-10-12  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (add_article_to_ctree_nolock): when calculating
	the linecount of a multipart binary, don't double the count for parts
	that have a repost too.

	(Dethreading)

	* pan/text.c: decrufting.  Renamed & reorganized inscrutably-named
	functions that have grown like mold over time.  Sorted the code into
	less irrational groupings.  Decreased the number of thread steps
	needed to update the text pane.  Fixed thread concurrency bug reported
	by war@starband.net.

	* pan/articlelist.c (articlelist_set_sort_type): throw away the old
	implementation and just call refresh (REFRESH_SORT) instead.

	(Code Tweaks)

	* pan/nntp.c (nntp_download_headers): remove 5 g_strdup()/g_free()
	pairs for each header downloaded.  Probably an unimportant change,
	but every little bit helps.

2001-10-11  Christophe Lambin <clambin@easynet.be>

	(Dethreading)

	* pan/articlelist.c: fixed crash when selecting an empty folder.

	(libESMTP)

	* pan.spec.in: added libESMTP to BuildRequires & Requires.
	* configure.in: include libESMTP's CFLAGS to cover non-standard 
	installations. Thanks to war@starband.net for reporting this.
	* pan/Makefile.am: sync.

2001-10-10  Charles Kerr <charles@rebelbase.com>

	(Dethreading)

	* pan/articlelist.c: rewrote the ways in which the articlelist's
	group is set and refreshed.  This simpler and cleaner now, at least
	as much as possible in threads.  This should ameliorate some of the
	"pan's threading is unstable!" complaints.

	* pan/base/group.[ch]: added an Article GMemChunk + accessor.
	* pan/base/article.[ch]: Article is no longer a PanObject; instead,
	its life cycle is tied to the article_refcount of the Group which
	owns it.  This resolves the Article life cycle issues like "what
	happens if a rule deletes an article that articlelist is drawing?"
	and "what if an article is expired while a person's reading it?" etc.

2001-10-10  Christophe Lambin <clambin@easynet.be>

	(libESMTP)

	* pan/smtp.c: rewrite, using Brian Staffort's libESMTP library.

	* configure.in: build with libESMTP.
	* acconfig.h: same.
	* pan/Makefile.am: build with libESMTP.

2001-10-09  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/gui-headers.c (gui_headers_set): wrap the author to cope with
	excessively long email addresses. Thanks to David Watson for
	reporting this.

2001-10-09  Charles Kerr <charles@rebelbase.com>

	(Dethreading)

	* pan/base/argset.c: new module.

	* pan/base/group.c (group_remove_articles): don't unset the group
	pointer when we remove the article from the group's article list --
	The group is still managing the article's memory during its lifespan.

	* pan/base/status-item.c (status_item_new_with_description): new
	constructor that lets the client pass in a description string at
	creation time.

	* pan/base/status-item.c (status_item_destructor): don't set the
	status-item to inactive here; this causes an unhappy feedback loop.
	A status item should be inactive before it's destroyed.

	* pan/status-item-view.c (status_cb_nolock): new impl function.

2001-10-07  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/filters/filter-top.c (filter_top_dup): initialise 'negate'
	so we can create negative aggregate filters. Thanks to Jed S. Baer
	for reporting this.

2001-10-04  Charles Kerr <charles@rebelbase.com>

	(UI: Text Pane Colors)

	* pan/pan.c (main): get the "cmap" variable before calling prefs_init
	so that we can alloc colors inside prefs_init.

	* pan/prefs.c: added two new preferences to toggle on/off using
	the gtkrc colors vs. custom colors in the article view window.

	* pan/text.c: fixed color-assignment bugs.  Thanks to war@starband.net
	for reporting this bug.

	(Code Tweaks)

	* pan/prefs.c (update_entry_and_bool_from_toggle_button): return
	a gboolean flag to indicate if the value has changed.

	* pan/base/debug.c (debug_printf): added "function" argument that
	uses gcc's PRETTY_FUNCTION if we're using gcc.
	* pan/debug.h: sync debugN and odebugN macros.

	* pan/base/util-mime.c: small cleanup.

2001-10-03  Christophe Lambin <clambin@easynet.be>

        * pan/articlelist.c (article_toolbar_set_filter): better fix
        for the Xlib async error.

2001-10-03  Charles Kerr <charles@rebelbase.com>

	* gmime/gmime-filter-basic.c: fix some compiler warnings.
	Also, add in a g_message couting the number of streams alive.
	There's a stream leak somewhere in Pan that I haven't been able
	to track down yet.  (fejj if you want to look at this -- do you
	have a news server?  If not, news.ou.edu is public -- go to
	alt.binaries.picture.fractals and start reading messages.
	Each read message leaves two dangling streams.)

2001-10-03  Jeffrey Stedfast  <fejj@ximian.com>

       * pan/base/util-mime.c (look_for_uuencoded_data): After splitting
       out the uu parts, reset the stream immediately so that if/when we
       write out the content stream, it will write from the
       beginning. This should also make it so any substreams created from
       this stream will be reset. Move the in_stream unreffing action to
       right after we create in_buf since we don't need to hold a ref any
       longer - this doesn't really change anything, it's more for
       peace-of-mind. Once in the for-loop, do proper unreffing of
       streams.

2001-10-03  Charles Kerr <charles@rebelbase.com>

	* pan/Makefile.am: update static libraries for Purify.

	* pan/articlelist.c: removed some debugging g_messages.
	* pan/nntp.c: same.

	* pan/text.c: sync with gmime update.
	* pan/base/article.c: same.
	* pan/base/decode.c: same.
	* pan/base/util-mime.c: same.

2001-10-03  Charles Kerr <charles@rebelbase.com>

	* pan/rules/rule-manager.c (add_any_needed_canned_rules): fix small
	memory leaks.  Thanks to Richard Deken for reporting these bugs.

	* pan/gui.c (edit_menu): added "Select message body" back into menu.
	Thanks to David Oberbeck for requesting this.

2001-10-02  Charles Kerr <charles@rebelbase.com>

	* pan/article-toolbar.c (sensitize_builtin_filters): fix
	Xlib async error.

	* pan/task-save.c: remove unused debugging statement
	* pan/base/serverlist.c: thread safety safeguard.

	* pan/articlelist.c (filter_changed_thread): some pthread safety
	checks when applying a filter to a set of articles.

2001-10-01  Christophe Lambin <clambin@easynet.be>

	* pan/message-window.c (apply_identity): don't add an attribution
	line for new posts & emails.

2001-09-28  Charles Kerr <charles@rebelbase.com>

	* pan/text.c: dead code removal.

	* pan/identities/identity.c (identity_dup): fixed small memory leak.
	Thanks to Richard Deken for reporting this bug.

2001-09-27  Charles Kerr <charles@rebelbase.com>

	* pan/text.c (append_text_cb): new function to display all text
	attachments instead of just the first one.  Thanks to Robert Tilley
	for reporting this bug.

	* pan/base/acache.c (acache_init): don't bother regenerating the
	message-id list if acache_init()'s already been called.

	* pan/base/article.c (article_get_header): fix for getting xrefs.
	This gets "when article is deleted/read/unread, propagate that
	to its crossposts" working again.

	* pan/status-item-view.c: fix problem that caused the progress bars
	to not always be cleared out when a task ended.

	* pan/text.c: unset the text widget's usize height when we're
	not showing pictures.  Thanks to Jed S. Baer for reporting this
	bug.

2001-09-23  Charles Kerr <charles@rebelbase.com>

	* pan/nntp.c (nntp_article_download): That fix in for version 1.197
	wasn't such a great idea; it created a new bug. Try a different
	fix instead.

2001-09-22  Charles Kerr <charles@rebelbase.com>

	0.10.0.91 Released!

2001-09-20  Charles Kerr <charles@rebelbase.com>

	* pan/articlelist.c: don't set the CTreeNodes' fonts when
	we can't load the font (user has selected a font that doesn't
	exist, etc).

	* pan/gui.c (navigate_menu): added new shortcuts for parent
	article and top-of-article.

	* pan/status-item-view.c: fixed crash that occurred when updating
	the gtkprogressbar in a non-gtk thread under pixmapped gtk themes.

	* pan/text.c (set_text_from_article_idle): silenced gtk warning.

	* pan/queue.c (queue_get_tasks): Made this function a little
	safer: we now return a newly-allocated array, instead of the
	queue's private GSList.  We also ref() each task in case it
	would otherwise be destroyed by the time the caller is done
	with the task list.  This new task array is created and reffed
	inside the queue_lock mutex.

	* pan/message-window.c (create_body_pane_nolock): always use a
	monospace font when posting, even if the user uses a variable
	width font when reading.  Thanks to Christian Lohmaier for
	reporting this.

2001-09-18  Fatih Demir <kabalak@gtranslator.org>

	* ABOUT-NLS & config.h.in: Removed from CVS.

2001-09-17  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* configure.in: use gdk-pixbuf-config, rather than gnome-config,
	when detecting the cflags/version/libs for gdk-pixbuf.  Thanks to
	Justin Piszcz for reporting this bug.

2001-09-16  Charles Kerr <charles@rebelbase.com>

	(GMime file support)

	* gmime/gmime-content.[ch]: new files that abstract out how a
	GMimePart's content is held - in a memory array or in a temporary
	file.  Being able to use temporary files lets us decode those
	iso-image attachments without running out of memory.

	* pan/base/decode.c: sync.

	* pan/base/util-mime.c: sync.  This actually lets us drop a couple
	of intermediate steps that used to be needed to massage the data
	into the right shape.

	* pan/text.c: sync.

2001-09-11  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/smtp.c: Fixed problem with date header not being sent when
	sending mail from Pan.  Thanks to Derek Poon for reporting this
	problem and submitting a fix.
			     
	* pan/base/newsrc-port.c: Fixed problem with importing an empty
	.newsrc file.  Thanks to Derek Poon for reporting this problem and
	submitting a fix.
							 
	* pan/queue.c: Fix problem with the queue running away with the
	CPU in 0.10.0.90.  Thanks to Chris Vance for reporting this bug and
	submitting a fix.

	* pan/text.c: Silence a g_warning.  Thanks to Muralito for reporting
	this bug.

	* pan/prefs.c: Fix a couple of typos in the preferences dialog.
	Thanks to Jacob Ils Christensen for posting this patch.

	* pan/dialogs/dialog-newuser.c: Hide the password when the user types
	it in.  Thanks to Jacob Ils Christensen for posting this patch.

2001-09-07  Charles Kerr <charles@rebelbase.com>

	(Goodbye, gtkhtml)

	* configure.in: remove gtkhtml checks, add gdk-pixbuf instead.
	* pan/text.c: gdk_pixbuf for inline images; homebrew clickable URLs
	* pan/prefs.c: add user-configurable URL link color, 2nd quote color

2001-09-07  Charles Kerr <charles@rebelbase.com>

	(Safeguards)

	* pan/base/pan-object.c (pan_object_is_valid): new sanity check func.
	* pan/base/group.c (group_is_valid): new sanity check func.
	* pan/base/group.c (most functions): g_return_if_fail(group_is_valid())
	in most of the function entry assertions.
	* pan/base/articlec (article_is_valid): call pan_object_is_valid().

2001-09-05  Christophe Lambin <clambin@easynet.be>

	(Profiles)

	* pan/message-window.c (post): if we're cross-posting, remember
	the used profile for all newsgroups we just posted too.

	(Bug Fix)

	* pan/message-window.c: avoid duplicate attribution lines if the
	current profile gets changed while writing an article.

2001-09-05  Charles Kerr <charles@rebelbase.com>

	(Tweak)

	* pan/grouplist.c (-grouplist_get_group_readable_name): use a buffer
	instead of a lot of alloc/free's.

	(Safety)

	* pan/file-headers.c: added some extra g_return_if_fail()s to be safe.
	* pan/file-grouplist.c: same.

2001-09-04  Charles Kerr <charles@rebelbase.com>

	(Usability)

	* pan/articlelist.c (group_articles_removed_cb): select, but
	don't activate, the next article after one's deleted.  This
	was intended to be a feature but got negative feedback.

	(Bug Fix)

	* pan/group-actions.c (delete_groups_dialog_cb): don't delete the
	groups if the user hit "no, don't do it".  D'oh!  Thanks to
	Mike Robinson for reporting this bug and submitting a patch.

	(Tweak)

	* pan/nntp.c (nntp_article_download): reuse a buffer, rather than
	alloc/free'ing a new string for each line we read from the server.

	* pan/text.c: sync with some of the gtkhtml-less text.c codebase.
   
2001-09-04  Christophe Lambin <clambin@easynet.be>

	(UI Tweak)

	* pan/articlelist.c: in unthreaded mode, set the article's style
	to reflect only the status of the article itself, not of the replies.
	
2001-09-03  Charles Kerr <charles@rebelbase.com>

	* pan/gui.c: added accelerators for getting articles & sub/unsub
	from group, by request.

2001-09-03  Charles Kerr <charles@rebelbase.com>

	* pan/gui.c: added shortcut for thread/unthread the header pane.

	* pan/base/article-thread.c: have threads with more unread/new
	children show up higher in the sort.

	* configure.in: lowered glib requirement to 1.2.8, since that's
	what gtk 1.2.10 requires.

2001-09-02  Charles Kerr <charles@rebelbase.com>

	(Collapse Group Name)

	* pan/gui.c: added to navigate menu: "Collapse names in group pane".
	* pan/prefs.c: sync.
	* pan/gropulist.c: sync.

2001-09-02  Charles Kerr <charles@rebelbase.com>

	(Save Dialog)

	* pan/save-ui.c: new file, replacing save.c, which integrates the
	"Save Article" and "Save Attachments" dialogs together.
	* pan/task-save.c: new file, replacing task-decode.c, which
	not only decodes articles but optionally saves the article bodies too.
	* pan/article-actions.c: sync.

	(Bug Fixes)

	* pan/nntp.c (nntp_download_body): if we somehow get fed a blank line
	from the server, don't crash.

2001-09-02  Charles Kerr <charles@rebelbase.com>

	(UI Tweaks)

	* pan/gui.c: added "space reading" into the navigational menu.

	(tmp dir)

	* pan/base/base-prefs.h: we no longer define our own tmp dir variable.
	Use g_get_tmp_dir() instead so that we can behave more like other glib
	apps.
	* pan/base/util-file.c: sync.
	* pan/prefs.c: sync.

	(portability (!))

	* pan/base/serverlist.c: use G_DIR_SEPARATOR where appropriate.
	* pan/base/ufil-file.c: same.
	* pan/base/file-grouplist.c: same.
	* pan/base/file-headers.c: same.
	* pan/base/acache.c: same.
	* pan/identities/identity-manager.c: same.
	* pan/filters/filter-manager.c: same.
	* pan/rules/rule-manager.c: same.
	* pan/prefs.c: same.
	* pan/thread-watch.c: same.
	* pan/save.c: same.

2001-09-02  Charles Kerr <charles@rebelbase.com>

	(Sorting)

	* pan/base/article-thread.c (sort_articles): added sorting by article
	raad state (new, unread, new replies, etc) and by action state
	(flagged, queued, etc).  This is triggered by clicking on columns 0
	and 1 in the thread tree.

2001-09-02  Charles Kerr <charles@rebelbase.com>

	(Living with Threads)

	* pan/articlelist.c: keep an array of all the articles we're using.
	Each article's refcount is raised by 1 as long as articlelist is using
	it.  (This has a nice side-effect of letting articlelist to stable
	sorting again)
	* pan/articlelist.c (clear_article_buffer): sync.
	* pan/articlelist.c (articles_added_cb): sync.
	* pan/articlelist.c (articles_removed_cb): sync.
	* pan/articlelist.c (articlelist_set_contents): sync.
	* pan/articlelist.c (articlelist_set_group_maybe): sync.

	* pan/articlelist.c (articlelist_update_articles): ref the
	articles before passing them along to an idle function, just
	to make sure they're still alive when the idle function's run.
	* pan/articllist.c (artlclelist_articles_read_changed): same.

	* pan/group.c: added a field "article_mutex" used whenever the group
	is doing heavy manipulation of its article list: for example, we don't
	want one thread Threading the articles while another is expiring old
	articles, etc.

2001-09-01  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (articlelist_articles_read_changed_idle):
	A GPtrArray and its buffer were being leaked each time an article's
	read state changed, yuck.

	* pan/text.c (text_create): fix problem with changing the background
	color of the gtkhtml pane.  Thanks to Tivo Leedjrv for providing
	this fix.

	* pan/base/group.c (group_inc_article_read_qty): return if
	group==NULL.  This was triggering a crash in articlelist under
	torture conditions.

	* pan/base/pan-glib-extensions.c (pan_str_unescape): fixed unescaping
	bug.  Thanks to Tivo Leedjrv for reporting this bug and providing
	a fix.

	* tests/test-pan-callback.c: sync the callback functions' signatures
	to match the PanCallback changes made earlier in the week.

	* pan/base/pan-glib-extensions.c (get_next_token_range): don't
	dereference a NULL pointer.

2001-08-31  Christophe Lambin <clambin@easynet.be>

	(Bug fix)

	* pan/base/file-headers.c (file_headers_save_folder): don't complain
	so loudly when an article has no body.

2001-08-30  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/util-mime.c (look_for_uuencoded_data): small memory leak.

	* pan/gmime/gmime-utils.c: update snapshot to fix encoding bug.
	Thanks to Christian Lohmaier for reporting this bug.

2001-08-30  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/message-window.c (article_gen_attribution_string): fixed
	corruption of the short author name.

	* pan/message-window.c (post): record the profile before we
	destroy the message window.

2001-08-29  Charles Kerr <charles@rebelbase.com>

	(Profiles)

	* pan/pan.c (shutdown): call identity_manager_shutdown_module().

	(Usability)

	* pan/gui.c: more descriptive tooltips for the task/connections
	buttons.

	* pan/prefs.c: made the default news server behavior to go online
	without being asked.  Most users seem to be online, rather than
	offline users, so this should be the default.

	(Stupid Tweaks)

	* pan/acache.c (acache_get_filename): use a buffer on the stack
	to avoid unnecessary malloc/free in some frequently-called funcs.
	* pan/util.c (get_date_display_string): same.
	* pan/article.c (article_get_short_author_str): same.

2001-08-29  Christophe Lambin <clambin@easynet.be>

	(Profiles)

	* pan/message-window.c (determine_default_identity): improved logic
	for guessing the default profile to propose. This mainly helps when
	writing a new email (e.g. Feedback).

	* pan/identities/identity-manager.c: new helper function to find
	a profile with matching author name & email address.
	* pan/identities/identity-manager.h: sync.

2001-08-29  Charles Kerr <charles@rebelbase.com>

	* pan/docs/faq.html: updated faq.

	* pan/configure.in: bumped glib/gtk requirements to 1.2.10

	* pan/identities/identity.c (identity_constructor): g_strdup() the
	default attribution string so that it doesn't get free()d later.
	This is my bug.

	* pan/xpm/pan_druid.xpm: new watermark for the new user screen.

	* pan/dialogs/dialog-new-user.c: added new information on the new
	user druid's welcome screen.

2001-08-28  Christophe Lambin <clambin@easynet.be>

	(Profiles)

	* pan/base/file-grouplist.c: bumped file format version number to 6.
	We now also store the last used profile for each group. 

	(Bug fixes)

	* pan/message-window.c (remove_signature): handle articles that are
	empty except for a signature.

	* pan/gui.c (send_feedback_cb): use the default profile for email.

	* pan/base/file-grouplist.c: fixed reading back the group's active
	filter name.

2001-08-28  Charles Kerr <charles@rebelbase.com>

	(Profiles)

	* pan/identities/identity-edit-ui.c: added in a default Attribution
	value when creating a new Profile.

	(Code Cleanup: PanCallback)

	* pan/base/pan-callback.h: made the cb return type void, not int.
	* pan/article-actions.c: sync.
	* pan/article-toolbar.c: sync.
	* pan/articlelist.c: sync.
	* pan/gui.c: sync.
	* pan/dialogs/dialog-log-viewer.c: sync.
	* pan/rules/rule-edit-ui.c: sync.

	(Code Cleanup: Menus)

	* pan/gui.c: use gnome menu macros for slightly less code sprawl.
	* pan/articlelist.c: same.
	* pan/message-window.c: same.

	(Code Cleanup: Dead Code Removal)

	* pan/articlelist.c (articlelist_sort_changed): removed dead code.
	* pan/articlelist.c (articlelist_all_download): same.
	* pan/articlelist.c (purge_articles): same.
	* pan/articlelist.c (articlelist_selected_purge_bodies): same.
	* pan/articlelist.c (articlelist_selected_purge_bodies_deep): same.
	* pan/articlelist.c (articlelist_all_purge_bodies): same.
	* pan/articlelist.c (articlelist_all_purge_bodies): same.
	* pan/util.c (test_linkify_text): same.
	* pan/message-window.c: removed appbar code.
	* pan/util.c (check_and_warn_if_version_change): same.

2001-08-28  Charles Kerr <charles@rebelbase.com>

        (Profiles)
	 
	* pan/gui.c (send_feedback_cb): now uses identity-manager
	* pan/smtp.c: same.
			 
	* pan/prefs.c: removed the Posting pieces from here, now that they're
	handled in Christophe's identity module. 

	* pan/util.c (get_host_name): this isn't needed; we use Identities now.
       	* pan/util.c (get_fqdn): same.
       	* pan/util.c (get_default_author_address): same.
       	* pan/util.c (get_default_author_from): same.

	(UI Tweaks)
	
	* pan/prefs.c: added a history pulldown with standard choices for
	external editors & external browsers.
       	* pan/prefs.h: same.

2001-08-27  Christophe Lambin <clambin@easynet.be>

	(Profiles)

	* pan/identities/identity-edit-ui.c: implemented the 'Custom Headers' 
	tab for Profiles: each profile can now hold its own set of custom 
	headers.

	* pan/message-window.c (revoke_identity/apply_identity): set the
	article's custom headers based on the Profile's custom headers.

	* pan/identities/identity-xml.c (write_identity): small bugfix in
	writing the custom headers to the data file.

	* pan/identities/identity.c (identity_find_custom_header_by_name):
	removed obsolete function.

2001-08-27  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/identities/identity-manager.c (construct_identity_from_prefs):
	fix scope problem that prevented creating a new identity from prefs.

	(Tweaks)

	* pan/article-filter-ui.c: added #include to make gcc happy.
	* pan/identities/identity-edit-ui.c: same.
	* pan/identities/identity.c (identity_find_custom_header_by_name):
	commented out unused function.

2001-08-27  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/text.c (text_read_more): fix bug that caused space reading to
	cause small articles to scroll off-window, then back again, before
	reading the next article.

	(External Editor)

	* pan/message-window.c: added External Editor support, finally.
	This is taken lock, stock, and barrel from Sylpheed.

	(Action Shuffling)

	* pan/article-actions.c: moved article deletion functions here from
	articlelist.c.  Added code to remove from acache any deleted article.

	* pan/articlelist.c: when articles are removed, check & see if the
	selected message is one of them.  If so, update the selection and,
	if "read on select" is turned on by the user, read the next message.

2001-08-27  Christophe Lambin <clambin@easynet.be>

	(Identities / Profiles)

	* pan/gui.c: renamed identities to profiles.
	* pan/identities/identity-edit-ui.c: same.
	* pan/identities/identity-ui.c: same.
	* pan/identities/identity-xml.c: same.
	* pan/identities/identity-manager.c: same.

	* pan/pan.c: first time a user starts Pan, we'll now create a default
	Profile, instead of writing the info into gnome_config.
	* pan/dialogs/dialogs-newuser.c: same.
	* pan/identities/identity-manager.c: sync.
	* pan/identities/identity-manager.h: sync.

2001-08-26  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c: fixed the skips-last-thread navigation error.
	Thanks to Adrian von Bidder for reporting this bug.

	(Identities)

	* pan/identities/identity.c (identity_is_valid): new sanity check
	function.

	* pan/identities/identity-edit-ui.c (identity_edit_dialog_get_identity):
	if the identity is incomplete/invalid, return a NULL instead.
	* pan/identities/identity-ui.c (add_dialog_clicked_cb): add check to
	see if identity_edit_dialog_get_identity() returned NULL.

2001-08-26  Christophe Lambin <clambin@easynet.be>

	(Identities)

	* pan/message-window.c: activated Identities.
	* pan/gui.c: same.
	* pan/Makefile.am: same.
	* configure.in: same.

	* pan/identities/identity-edit-ui.c: don't use the identity manager 
	to get the default news & mail identities.
	* pan/identities/identity-ui.c: sync.

	* pan/identities/identity-manager.c: API change for setting defaults.
	* pan/identities/identity-manager.h: sync.
	* pan/identities/identity-ui.c: sync.

	* pan/base/group.c: added 'identity_name' to remember the last 
	identity used to post to that group.
	* pan/base/group.h: same.

2001-08-24  Charles Kerr <charles@rebelbase.com>

	(GUI)

	* pan/gui.c: updated shortcuts & hotkeys; some were in conflict.
	* pan/articlelist.c: same.

	(Bugfix)

	* pan/text.c fontname(): Moved out of the #ifdef GTK_HTML block so
	that Pan will build for test users too.  Thanks to Jed S. Baer for
	reporting this problem.

	(Speedups)

	* pan/base/group.c: replace the group_changed() callback with a
	groups_changed() callback so that we can batch updates of changed
	groups.  This is useful when mass subscribing/unsubscribing during
	importing .newsrc files.

	* pan/base/group.c: replaced group_set_subscribed() with
	groups_set_subscribed().

	* pan/grouplist.c: listen for groups_changed instead of
	group_changed.

2001-08-24  Christophe Lambin <clambin@easynet.be>

	(Bug fixes)

	* pan/articlelist.c: make sure to clear 'unread_children' when
	marking all articles as read. 

	* pan/gui.c: set the correct state on 'use monospace font' on
	startup.

	(Identities)

	* pan/identities/identity-edit-ui.c: code cleanup & memory leaks.
	* pan/gui.c: prepare for integration into the GUI.

2001-08-23  Charles Kerr <charles@rebelbase.com>

	(Show/Hide)

	* pan/gui-paned.c: added code to show/hide various panes based
	on user choice.
	* pan/gui.c: sync.
	* pan/prefs.c: sync.

	(Menu)

	* pan/gui.c: plugged back in the menu sensitive/insensitive code.
	Menus should be good to go now.


2001-08-23  Christophe Lambin <clambin@easynet.be>

	(Identities)

        * pan/identities/*[ch]: added user interface for managing identities

2001-08-23  Charles Kerr <charles@rebelbase.com>

	* configure.in: bumped version number to 0.10.90

	* pan/Makefile.am: tweaks to make automake 1.5 happy

	* pan/text.c (text_get_article_body): fix tab damange.

	* pan/articlelist.c: when user selects an empty group,
	automatically go to download new headers, rather than
	popping up a 'download headers' dialog.

	(Menus)

	* pan/articlelist.c: added accelerators, shortcuts for
	the shiny new menu items.
	* pan/gui.c: same.  Also plugged in everything except
	the three toggle-pane-visible buttons.
	
	(Navigation)

	* pan/articlelist.c: added small correctness checks.

2001-08-23  Charles Kerr <charles@rebelbase.com>

	(Navigation)

	* pan/gui.c: updated the Navigation menu based on user
	suggestions.
	* pan/prefs.c: added 'skip uncached' and 'load on select'
	preferences for the navigation menu.
	* pan/gui.c: sync.
	* pan/articlelist.c: rewrote most of the navigation code.

	(Cleanup)

	* pan/article-filter-ui.c: include libgnomeui.h instead of gnome.h
	* pan/article-find.c: same.
	* pan/article-toolbar.c: same.
	* pan/articlelist.c: same.
	* pan/group-action.c: same.
	* pan/gruop-ui.c: same.
	* pan/grouplist.c: same.
	* pan/gui-headers.c: same.
	* pan/gui-notebook.c: same.
	* pan/message-check-ui.c: same.
	* pan/message-window.c: same.
	* pan/save.c: same.
	* pan/server-ui.c: same.
	* pan/status-item-view.c: same.
	* pan/task-decode.c: same.
	* pan/task-manager.c: same.
	* pan/text.c: same.
	* pan/dialogs/dialog-about.c: same.
	* pan/dialogs/dialog-group-props.c: same.
	* pan/dialogs/dialog-headers.c: same.
	* pan/dialogs/dialog-log-viewer.c: same.
	* pan/dialogs/pan-about.c: same.


2001-08-22  Charles Kerr <charles@rebelbase.com>

	(Group Actions)

	* pan/grouplist.c: removed the group 'action' functions for
	downloading messages/headers, subscribing/unsubscribing,
	deleting groups, and so forth.
	* pan/group-action.c: this is where the grouplist's 'action'
	functions get moved.

	(Menu Update)

	* pan/gui.c: updated Group menu based on feedback from the
	pan-users mailing list.
	* pan/prefs.c: added 'download_bodies_too' handling.
	* pan/gui.c: sync.

	(Bugfixes)

	* pan/task-headers.c (task_headers_run): small bugfix to
	remove glib warning.

	(Cleanup)

	* pan/dialogs/dialog-newuser: code cleanup.

	* pan/articlelist.c: removed debugging statements.

	* pan/grouplist.c: removed unused functions, made functions
	private where appropriate

2001-08-21  Charles Kerr <charles@rebelbase.com>

	(Removing Useless Junk)

	* pan/message-window.c: removed "open article in new window"
	* pan/articlelist.c: sync.
	* pan/task-body.c: sync.
	* pan/text.c: sync.

	(UI: Menus)

	* pan/articlelist.c: a little more menu work.

2001-08-21  Charles Kerr <charles@rebelbase.com>

	(Bug Fix)

	* pan/article-toolbar.c (custom_filter_selected_cb): fix bug
	that caused the articlelist to not be re-filtered when the
	user switched between Author and Subject filtering.

	(UI: Menus)

	* pan/gui.c: started the menu redesign discussed in pan-users.
	added some select-group, select-articles functions, regrouped
	other menu items in a way that makes more sense.
	* pan/gui-notebook.c: removed layout-specific selection code.
	* pan/gui-paned.c: same.
	* pan/server-ui.c: changed search path of where to insert the
	server menu buttons in the main menu.
	* pan/text.c: removed popup menu.

	(UI: Filter History)

	* pan/article-toolbar.c: added a popdown w/history in the
	article subject/author filter.  Thanks to Adam Nevins for
	making this suggestion.
	* pan/grouplist: added a popdown w/history here too.

	(Feature: Use Monospace Font)

	* pan/prefs.c: added new preferences option: whether or
	not to use a monospace font in the body pane.  You can
	configure both fonts in the preferences dialog.
	* pan/text.c: sync.
	* pan/gui.c: sync.

2001-08-20  Christophe Lambin <clambin@easynet.be>

	(bug fix: send pending messages)

	* pan/base/article.c: make sure to save *all* headers to
	'sendlater', so we have all the information to send them later.
	Thanks to T'aZ and Frank Van Damme for reporting problems in
	this area.
	* pan/base/article.h: same.

	(Identities)

        * pan/identities/*[ch]: landed initial data structures into CVS.

2001-08-18  Charles Kerr <charles@rebelbase.com>

	(bug fix: i18n)

	* pan/gmime: updated snapshot of GMime to get the g_mime_charset
	functions.  According to fejj the CODESET patch in 0.10.0 has some
	issues.
	* pan/message-send.c: sync.

	(bug fix: font size in gtkhtml pane)

	* pan/text.c (colorize_html): work around apparent gtkhtml
	font-tags-can't-be-nested brane damage.  Thanks to David Watson
	for reporting this bug.

2001-08-16  Charles Kerr <charles@rebelbase.com>

	Pan 0.10.0 Released!

2001-08-16  Charles Kerr <charles@rebelbase.com>

	(Bug Fix)

	* pan/task-group-count.c: don't update the group article low/high
	from this information, because that screws up counting of which
	articles are new the next time you fetch headers.

2001-08-15  Charles Kerr <charles@rebelbase.com>

	(Bug Fix)

	* pan/rules/rule-ui.c (apply_now_thread): Fix crash that occurred
	when applying rules to selected groups, when no group was loaded in
	the thread view pane.  Thanks to T'aZ for reporting this.

	(Sanity Checks)

	* pan/nntp.c (nntp_article_download): better sanity checks.
	* pan/nntp.c (nntp_download_bodies): same.
	* pan/nntp.c (nntp_cancel): same.
	* pan/article-find.c (compare_article): same.
	* pan/article-actions.c (find_matching_sent_article): same.
	* pan/filters/filter-cached.c (filter_cached_test_articles): same.
	* pan/rules/rule-action.c (rule_action_apply): same.

2001-08-13  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/gui.c: the "Message" menu shortcut key conflicted with
	the "Edit" shortcut.  Thanks to David Oberbeck for reporting
	this bug.

	* pan/articlelist.c (build_article_ctree_recursive): fix bug
	that caused follow-ups to a multipart post to not be added to
	the ctree.  Thanks to Jed S. Baer for reporting this bug.

	* pan/text.c (add_inline_images_mpfunc): go ahead and show
	images even if they're not flagged as "inline".  This is usenet,
	chances are the poster intended for them to be inline anyway.

	(GMime update)

	* gmime: update of gmime-parser.c and gmime-utils.c
	* pan/base/util-mime.c (pan_g_mime_parser_construct_message): sync.

2001-08-10  Charles Kerr <charles@rebelbase.com>

	(Release)

	* README
	* configure.in
	* NEWS
	* TODO
	* CREDITS
	* pan/dialogs/dialog-about.c: Updated for 0.10.0 release

2001-08-09  Christophe Lambin <clambin@easynet.be>

	(Task Manager)

	* pan/task-manager.c: added keyboard shortcuts to cancel and reorder
	tasks.  Thanks to Ryan Daniels for suggesting this.
	
2001-08-08  Christophe Lambin <clambin@easynet.be>

	(Bug fixes)

	* pan/gui-paned.c (gui_paned_construct): allow the grouplist pane
	to shrink beyond its requisition size to account for people running
	under lower resolutions. Thanks to mdew for reporting this problem.

2001-08-06  Charles Kerr <charles@rebelbase.com>

	(Prefs UI)

	* pan/prefs.c: committed patch written by Mike Robinson to make
	the cache tab look a little cleaner.  Thanks!

2001-08-06  Charles Kerr <charles@rebelbase.com>

	(Icons)

	* pan/gui.c: refresh icons for Help|Manual, Help|Feedback
	* pan/articlelist.c: added evo's icons for move/copy-to-folder.
	* pan/article-toolbar.c: added 'glasses' icon for watched threads.

2001-08-06  Stanislav Visnovsky  <visnovsky@nenya.ms.mff.cuni.cz>

	* pan.desktop: Added Slovak messages from Marcel Telka <marcel@telka.sk>

2001-08-06  Stanislav Visnovsky  <visnovsky@nenya.ms.mff.cuni.cz>

	* CREDITS, NEWS: Added credits for translation by Marcel Telka.
	* configure.in: Added sk to ALL_LINGUAS
	* po/sk.po: Added Slovak translation from Marcel Telka <marcel@telka.sk>

2001-08-02  Charles Kerr <charles@rebelbase.com>

        (Posting Headers)

	* pan/message-send.c: added support for pumping the charset from
	nl_langinfo instead of just hardcoding the charset.  Thanks to
	Volodymyr M . Lisivka for the patch.

	* pan/message-window.c: in the "Extra Headers" field on a follow-up,
	try to add the X-Comment-To: header for Fido users.  Thanks again to
	Volodymyr M . Lisivka for the patch.

	(UI Improvements)

	* pan/rules/rule-edit-ui.c: if the rule that the user selects for
	this filter is an empty filter, a warning is given.

2001-07-31  Christophe Lambin <clambin@easynet.be>

	(Bug fixes)

	* pan/prefs.c (prefs_newsrc_page): toggling the 'subscribed groups
	only' and 'backup .newsrc' switches wasn't activating the 'Apply'
	button.

2001-07-31  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/text.c (update_body_pane_nolock): small cleanup.  This seems
	to Make Gtk 1.2's GtkText widget a little happier.

	(UI Changes)

	* pan/base/file-grouplist.c: if we get an unsupported file format,
	ask "are you using an old version of Pan by accident?" because this
	is the typical cause for this error
	* pan/base/file-headers.c: sync.

	* pan/xpm/old_binary_complete.xpm:
	* pan/xpm/old_binary_incomplete.xpm:
	* pan/xpm/binary_complete.xpm:
	* pan/xpm/binary_incomplete.xpm: increase contrast with the new/old
	text article icons to make them easier to notice at-a-glance.

	* pan/xpm/filters.xpm: added a black triangle pointing down to
	indicate that this is a popdown menu button.

	* pan/gui.c: moved "task manager" to the top of the online menu
	to make it easier to find.  Some people still don't know you can
	stop a running task.

2001-07-30  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/articlelist.c (articlelist_repopulate): fix array-bounds-write
	error introduced late last week.  Thanks to Adrian von Bidder for
	leading me to this bug.

2001-07-29  Christophe Lambin <clambin@easynet.be>

	(Text Wrapping)

	* pan/prefs.c: new feature to disable wrapping the body of a message 
	when replying. Thanks to Twigboy for suggesting this feature.
	* pan/prefs.h: sync.
	* pan/message-window.c: sync.

2001-07-28  Charles Kerr <charles@rebelbase.com>

	(UI Changes)

	* pan/xpm/old_binary_complete.xpm: new icon.
	* pan/xpm/old_binary_incomplete.xpm: new icon.
	* pan/articlelist.c: sync.

	* pan/prefs.c: changed some of the new features' phrasing at
	Christophe's suggestion.

	(Canned Rules)

	* pan/rules/rule-manager.c: brought into sync with filter-manager
	with the graceful restoring of canned rules that have somehow been
	lost.

2001-07-28  Christophe Lambin <clambin@easynet.be>

	(UI Changes)

	* pan/articlelist.c (articlelist_set_node_style_nolock): implemented
	coloring watched & ignored threads.

	(Bug Fixes)

	* pan/gui-paned.c (gui_paned_construct): Pan wasn't restoring its
	column widths for the article list.
	* pan/gui-notebook.c (gui_notebook_contruct): same.

	* pan/rules/rule-ui.c (apply_now_thread): refresh the article list
	when we manually apply a rule to the active group.
	* pan/rules/rule.c (rule_apply): return the number of articles matched,
	so that callers know whether they need to take some action.
	* pan/rules/rule.h: sync.

2001-07-27  Charles Kerr <charles@rebelbase.com>

	(Rule/Filter Changes)

	* pan/rules/rule-manager.c: replaced "Ignore Bozos" with
	"Delete Bozos".  This way if a bozo posts in an interesting
	thread then we'll still have the interesting thread and only
	the bozo will get thrown out.

2001-07-27  Christophe Lambin <clambin@easynet.be>

	(Filters)

	* pan/article-toolbar.c: new approach to setting custom filters.
	Custom filters can now be switching on and off in one click.

	(Bug Fixes)

	* pan/article-toolbar.c: when switching to custom filters, remove
	the filter phrase, since we're not filtering on that anymore.

	* pan/prefs.c: applying changes would change the font of all
	articles in the active group to bold.

2001-07-27  Charles Kerr <charles@rebelbase.com>

	(UI Changes)

	* pan/text.c: borrowed Sylpheed's "smooth scrolling" for the
	text window on space reading.
	* pan/prefs.c: added prefs to turn smooth scrolling on/off.

	* pan/article-toolbar.c: updated to the new envelope icons.
	* pan/xpm: removed unused xpm files.

2001-07-26  Charles Kerr <charles@rebelbase.com>

	(UI Changes: Colors, Icons, Fonts)

	* pan/article.h: added "new_children" field, mirroring
	"unread_children".  Used in articlelist when boldfacing articles
	that have new replies.
	* pan/article.c: sync.
	* pan/article-thread.c (thread_articles): populate new_children

	* pan/articlelist.c: removed "new children" column
	* pan/articlelist.c: added new icon/color/font scheme for showing
	the user which threads have new replies, which threads have unread
	replies, which articles are new, which articles are read, etc.
	* pan/articlelist.c: added some icons to the articlelist menu
	* pan/prefs.c: sync in color/font settings for thread pane.

	* pan/grouplist.c: changed the "subscribed group" icon.
	* pan/gui.c: sync in the "subscribed group" menu buttons.

	* pan/gui.c: added the unread/total article qty to the titlebar

	* pan/gui.c (widget_set_font): rewritten as pan_widget_set_font()
	* pan/message-window.c: sync.
	* pan/text.c: sync.

	(Better Tracking of New Articles)

	* pan/file-grouplist.c: bumped file format version number to 5.
	The new version stores article_high_old.  This way 'new' articles
	are 'new' until you fetch new headers from that group, EVEN IF
	you quit & restart Pan or leave the group and then come back later.

	(Email Addresses)

	* pan/*: replaced superpimp.org with rebelbase.com

2001-07-25  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/article-toolbar.c (article_toolbar_set_filter): didn't fire
	a `filter changed' event when the toolbar was set to a custom
	filter.  Thanks to Christophe for noticing this.

	(Space Reading)

	* pan/text.c: the happy return of space reading!

	(Read Next/Prev Thread)

	* pan/articlelist.c (articlelist_view_prev_thread): new func.
	* pan/articlelist.c (articlelist_view_next_thread): new func.
	* pan/gui.c (navigate_menu): added buttons for these.

	(Usability)

	* pan/gui.c: added keyboard accelerators to every button in the
	main menu.  Most buttons didn't have one.
	* pan/articlelist.c: same.

	* pan/articlelist.c (articlelist_delete_articles): when we delete
	articles from the articlelist, make sure select the next article.
	This makes deleting articles from the keyboard friendlier.

	(Safety Checks)

	* pan/articlelist.c (articlelist_set_selected_nodes): behave
	gracefully even if an array of NULL nodes gets passed in.

2001-07-24  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/article-list-toolbar-mediator.c: use the `rebuild' variable
	properly to avoid having an articlelist populated twice when a
	group is loaded.

	(Safety Checks)

	* pan/rules/rule.c (rule_apply): log an error if the filter which this
	rule relies on isn't found.  In this case, all articles fail the
	filter.

	* pan/filters/filter.c (filter_remove_failures): in the case that a
	NULL filter is passed in, all articles should be removed.

	* pan/filters/filter-manager.c: By Christophe's suggestion, we now
	gracefully recreate builtin filters if they get deleted accidentally.

2001-07-24  Charles Kerr <charles@rebelbase.com>

	(Code Cleanup: gnksa_generate_message_id)

	* pan/base/gnksa.c (gnksa_generate_message_id): add a millisecond part
	to improve chances of uniqueness.

	* pan/base/gnksa.c (gnksa_generate_message_id_from_email_addr): new
	function that safely extracts a domain from an email address and
	passes it along to gnksa_generate_message_id().  Previously calls to
	gnksa_generate_message_id() did this on their own without any
	error-checking.
	* pan/base/article.c: sync.
	* pan/message-send.c: sync.
	* pan/message-window.c: sync.
	* pan/article-actions.c: sync.

	* pan/tests/test-gnksa.c: added tests for Message-ID generation.

2001-07-23  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/pan-glib-extensions.c (get_next_token_g_str): fixed bug
	that caused Pan to crash when a NULL string was passed in.  Thanks to
	Shawn Lindsay for reporting this bug. 
	* pan/tests/test-gnksa.c: added regression test to exercise
	get_next_token_g_str a little more.

	(Tweaks)

	* pan/article-toolbar.c (create_filter_from_ulong): smarter creating
	of filters from the filter_bits variable.  Fewer filters when
	possible.

2001-07-23  Christophe Lambin <clambin@easynet.be>

	(Bug Fixes)

	* pan/filters/filter-aggregate.c: fix bug that resulted in 
	no articles being shown when all filter buttons were selected.

2001-07-22  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/gui-paned.c (gui_paned_construct): fix bug that caused
	the slider to get lost under the buttons at the top of the panes.
	Thanks to Owen Taylor for reporting & fixing this bug.

2001-07-22  Christophe Lambin <clambin@easynet.be>

	(Rules)

	* pan/rules/rule-edit-ui.c: implemented applying rules on a subset 
	of subscribed rules.

	* pan/rules/rule-xml.c: stores scope of each rule (i.e., using
	a wildcard, or a subset of subscribed newsgroups).
	* pan/rules/rules.dtd: sync.

2001-07-21  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/rules/rule-xml.c (create_rule): fix bug that caused
	apply_to_incoming to be set to true even when it was false.

	* pan/rules/rule-edit-ui.c (dialog_close_cb): make sure to
	unregister from the pan_callbacks() that we registered for
	when the dialog was created.

	* pan/thread-watch.c (thread_set_state): make sure the article's
	group gets its articles-dirty flag set.

	* pan/gui.c (rules_cb): ensure that only one rule dialog at a time
	gets popped up from the gui menu.

	* pan/gui.c (filter_cb): ensure that only one rule dialog at a time
	gets popped up from the gui menu.

	(Usability Tweaks)

	* pan/prefs.c: acache_flush_on_exit now defaults to FALSE for new
	users.  Too many people didn't understand where their articles were
	going.

	* pan/gui.c: added a shortcut (ctrl-f) for the filter editor.

	* pan/filter/filter-aggregate.c (filter_aggregate_test_articles):
	return FALSE when no children in the filter, just for safety.

	(Filters & Rules)

	* pan/filters/filter-manager.c: implemented the canned filters: now
	when a new user starts Pan, "Bozos" and "Spam" filters are created.

	* pan/rules/rule-manager.c: implemented the canned rules: now when
	new users start Pan, "Ignore Bozos" and "Ignore Spam" rules are
	created.

	* pan/article-filter-ui.c: new file.  It's a dialog for adding the
	current article to the spam and/or bozo filter in an easy way.
	* pan/articlelist.c: sync.
	* po/POTFILES.in: sync.

	* pan/filters/filter-manager.h: added "bozo_filter_name" global.
	* pan/filters/filter-manager.h: added "spam_filter_name" global.

	* pan/bozo.[ch]
	* pan/bozo-ui.[ch]
	* pan/filters/filter-bozo.[ch]
	* pan/dialogs/bozo-dialog.[ch]: removed obsolete files.  Bozos are
	finally integrated into the Filter/Rule system.
	* pan/gui.c: sync.
	* pan/articlelist.c: sync.
	* pan/rules/rule-action.c: sync.
	* pan/rules/rule-edit-ui.c: sync.
	* pan/rules/rule-xml.c: sync.
	* pan/filters/filter-edit-ui.c: sync.
	* pan/filters/filter-xml.c: sync.
	* po/POTFILES.in: sync.

	(New Internal Utilities)

	* pan/util.c (pan_error_dialog_parented): new function.

2001-07-20  Christophe Lambin <clambin@easynet.be>

	(Filters)

	* pan/article-list-toolbar-mediator.c: save and restore filter
	settings for individual groups.
	* pan/article-toolbar.c: sync.
	* pan/base/group.h: sync.
	* pan/base/group.c: sync.

2001-07-19  Charles Kerr <charles@rebelbase.com>

	(URL Viewing)

	* pan/util.c (pan_url_show): new wrapper around gnome_url_show that
	looks at user's local settings and BROWSER variable before punting
	to gnome_url_show.
	* pan/gui.c (pan_manual_url): sync.
	* pan/gui.c (pan_homepage_url): sync.
	* pan/text.c: (on_link_clicked): sync.
	* pan/prefs.c: added support for editing/saving external_web_browser.

2001-07-18  Charles Kerr <charles@rebelbase.com>

	(Threading)

	* pan/base/article-thread.c (thread_articles): Better threading of
	articles where the parent of a followup's message isn't available
	but one of its ancestors is.

2001-07-18  Charles Kerr <charles@rebelbase.com>

	(Bug Fixes)

	* pan/base/acache.c (acache_init): handle readdir failure without
	crashing -- occurred when the cache directory didn't exist & couldn't
	be created.

	* pan/base/acache.c (acache_shutdown): acache's two PanCallback objects
	weren't freed.

	* pan/base/newsrc-ui.c: fixed a small memory leak in the
	import/export dialog -- the path string wasn't freed.

	* pan/rules/rule-edit-ui.c (filter_to_string_recursive): fix small
	memory leak.  The rule strings weren't freed.

	(Small Improvements)

	* pan/base/util-file.c (pan_make_temp): if the temp directory can't
	be used, fall back to $TMPDIR or just /tmp.

2001-07-18  Christophe Lambin <clambin@easynet.be>

	(Filters)

	* pan/article-toolbar.c: clear the 'use custom filter' toggle
	when we're not using one.

2001-07-17  Charles Kerr <charles@rebelbase.com>

	* pan/base/newsrc-port.c: fixed a small memory leak in newsrc_export;
	lots of code cleanup & added comments.

	* pan/base/pan-glib-extensions.c (pan_strstr): added a NULL-friendly
	version of strstr.  The rest of the code now uses this instead of
	strstr().   Pan was passing NULL to strstr() when the cache disk was
	full.

2001-07-17  Fatih Demir <kabalak@gtranslator.org>

	* .cvsignore, pan/base|filters|rules/.cvsignore:
	Added/extended the cvsignores.

2001-07-16  Charles Kerr <charles@rebelbase.com>

	(Bugfixes)

	* pan/gui.c (widget_set_font_on_realize): fix free-memory-read and
	free-memory-write bug.  This fixes the ever-popular "1z" bug.  Adam
	Huffman should get the credit for this one since he tracked it down
	to the font-setting code.

	* pan/filters/filter-xml.c: make filter_xml_read check the return
	code from xmlParseFile.  Same as yesterday's fix, applied to a
	different potential bug.

	* tests/test-message-check.c: added a test to make sure that Adrian
	von Bidder's followup message doesn't get marked with a "new new
	content" message.  This is just a regression test for the code fixed
	by Christophe yesterday.

	(Filters)

	* pan/base/group.c: free the filter_name string in the group's
	destructor.
	* pan/base/file-grouplist.c: save & restore the filter_name in the
	grouplist file; bumped the file format version to 4.

	(Tweak)

	* pan/configure.in: Tell what version of gnome-libs we're looking for.

	* pan/configure.in: We were looking for libxml >= 1.8.11; this has
	been fixed to look for [1.8.11....2.0.0).  Got this idea from gal.

2001-07-16  Christophe Lambin <clambin@easynet.be>

	(Bugfixes)

	* pan/rules/rule-ui.c: 'Add New' crashed when no filters were
	defined.  Thanks to Jed S. Baer for reporting this problem.

	* pan/rules/rule-xml.c: cleaner way of handling 'no rules'.
	* pan/filters/filter-xml.c: cleaner way of handling 'no filters'.

2001-07-15  Adam Huffman <bloch@verdurin.com>

	(Bugfixes)

	* pan/rules/rule-xml.c: make rule_xml_read check the return code 
	from xmlParseFile. 
	Thanks to Jed S. Baer for reporting this problem.
	
2001-07-15  Christophe Lambin <clambin@easynet.be>

	(Bugfixes)

	* pan/base/message-check.c: under certain conditions, Pan could
	erroneously decide that there's no new content in a posting.
	Thanks to  Adrian von Bidder for reporting this problem.

2001-07-12  Christophe Lambin <clambin@easynet.be>

	(Bugfixes)

	* pan/text.c: improve our handling of an article's References,
	where some newsreaders use multiple spaces to separate MessageIDs.
	Thanks to Adrian von Bidder for reporting this problem.

2001-07-10  Christophe Lambin <clambin@easynet.be>

	(Filters)

	* pan/filters/filter-ui.c: don't delete a filter if there are still
	rules using that filter.
	* pan/rules/rule-manager.c: sync.
	* pan/rules/rule-manager.h: sync.

	* pan/rules/rule-edit-ui.c: set the active filter in the menu.

2001-07-04  Christophe Lambin <clambin@easynet.be>
 
	(Bugfixes)
	 
	* pan/task-headers.c: only update the range of a group once we've
	removed expired articles, so that we can detect whether these
	articles were read or not.
       	* pan/base/file-headers.c: sync.
       	* pan/base/group.c: sync.
       	* pan/base/group.h: sync.
       	* pan/base/newsrc.c: sync.

2001-06-27  Charles Kerr <charles@rebelbase.com>

	(Filters)

	* pan/articlelist.c: in the filtering task description, give the
	name of the filter (if the filter has a name).

	* pan/article-toolbar.c: now handles going from one custom filter
	to another correctly.

	* pan/article-toolbar.c: cleaned up some of the text messages.

	(Bozo Dialog)

	* po/POTFILES.in:
	* pan/gui.c:
	* pan/bozo-ui.c: new file -- added the bozo dialog back in.

	* po/POTFILES.in:
	* pan/dialogs/rules.glade:
	* pan/dialogs/rules_interface.[ch]: 
	* pan/dialogs/rules_callbacks.[ch]: removed dead files.

2001-06-26  Charles Kerr <charles@rebelbase.com>

	* configure.in: halfway updated to autoconf 2.50.  Didn't change to
	configure.ac, as automake's patches seem to not handle it completely.

2001-06-23  Charles Kerr <charles@rebelbase.com>

	(Filters & Rules)

	* pan/rules/rule-ui.c: added "apply to selected groups" button.
	* pan/rules/rule-ui.c: added "apply to subscribed groups" button.
	* pan/rules/rule-xml.c: fix bug in loading rules, to see if the rule
	should be applied to incoming messages or not.
	* pan/rules/rule-edit-ui.c: added "apply to incoming" button.
	* pan/rules/rule-ui.c: added hit ratio column in clist.
	* pan/rules/rule-ui.c: make the edit/remove/apply buttons insensitive
	whenever no rule is selected.
	* pan/filters/filter-ui.c: make the edit/remove buttons insensitive
	whenever no filter is selected.

2001-06-20  Charles Kerr <charles@rebelbase.com>

	(Filters)

	* pan/filters/filter-saved.c: new Filter
	* pan/filters/filter-edit-ui.c: sync.
	* pan/filters/filter-xml.c: sync.

	* pan/article-toolbar.c: sync. Now we can finally plug the
	saved/queued/idle buttons into the rule generator.

2001-06-20  Christophe Lambin <clambin@easynet.be>

	* Remove reference to task's high_priority field where appropriate

	* Posted articles are now added to the front of the queue.

2001-06-20  Charles Kerr <charles@rebelbase.com>

	(Filter Usability)

	* pan/article-toolbar.c: made the way of toggling between custom filters
	and the builtin filter flags a little nicer.

	(Filter Matches - What to Show)

	* pan/articlelist.c:
	* pan/article-list-toolbar-mediator.c:
	* pan/article-toolbar.c: added ability on what articles to show on a
	filter match: article, article+references, article+replies, or entire
	thread.

2001-06-15  Charles Kerr <charles@rebelbase.com>

	(Rules & Filters)

	* pan/article-toolbar.c: more love.

	* pan/rules/rule-xml.c:
	* pan/rules/rule-ui.c:
	* pan/rules/rule-edit-ui.c:
	* pan/rules/rules.dtd: landed new rules code into CVS.  The new rules
	are integrated with the new filters landed last week, yay!

	* pan/pan.c:
	* pan/gui.c: sync.
	* pan/task-headers.c: sync.

2001-06-14  Charles Kerr <charles@rebelbase.com>

	(Filter Memory Management)

	* pan/article-toolbar.c (create_filter_from_ulong): make the resulting
	filter a little smaller.
	* pan/article-toolbar.c (update_custom_menus): fix FMR error.
	* pan/filters/filter-ui.c (filter_dialog_close_cb): fix memory leak.

	(XML Utilities)

	* pan/pan-glib-extensions.c (pan_str_escape):
	* pan/pan-glib-extensions.c (pan_str_unescape): new utility function.
	* pan/test.c (make_safe_for_html): superceded by pan_str_escape
	* pan/filters/filter-xml.c (pan_g_string_append_escaped): now use
	pan_str_escape.

2001-06-13  Charles Kerr <charles@rebelbase.com>

	(Filter Memory Management)

	* pan/filter-xml.c: make sure we unref articles after adding them as
	children to filter_aggregate.
	* pan/article-toolbar.c: same.

	* pan/article-toolbar.c: refer to the filters by name, rather than by
	pointer value, because filters are all copy-by-value and so the
	pointers are not reliable.

        * pan/article-list-toolbar-mediator.c: make sure we unref the filter
	when we're done with it.

2001-06-13  Charles Kerr <charles@rebelbase.com>

	(Author Name Attribution)

	* pan/message-window.c: added Christophe Lambin's patch for %n being
	replaced with the short author name string in the attribution lines.
	* pan/prefs.c: sync.

	(Filters)

	* pan/filters/filter.c (filter_test_articles): new virtual function.
	This lets us test batches of articles recursively in a slightly more
	efficient way.
	* pan/filters/filter-aggregate.c (filter_aggregate_test_articles):
	if there's only one filter in the aggregate, just call
	filter_test_articles() for the aggregate.

	* pan/filters/filter-phrase.c: allow filtering on the Message-ID field.

	* pan/article-toolbar.c: polish, polish, polish.

2001-06-12  Charles Kerr <charles@rebelbase.com>

	(Filters)

	* pan/filters/filter-thread.c: added "neither watched nor ignored"
	state in filter-thread.
	* pan/filters/filter-edit-ui.c: sync.
	* pan/filters/filter-xml.c: sync.

	(Filter UI)

	* pan/article-toolbar.c: more love.  About 90% ready.
	The traditional FILTER_STATE filters are faster; you can edit
	filters from the cascading menu; the code's been tidied up some more.

	* pan/articlelist.c: emit a status message telling the user when the
	articles are being filtered.  This is as much for my benifit as the
	user's: this is a useful way of seeing how long filtering takes.

	(Dialogs)

	* pan/gui.c (filter_cb): parent the dialog before showing it.
	* pan/dialogs/rules_callbacks.c (dialog_rules): same.
	* pan/dialogs/rules_callbacks.c (dialog_edit_rule): same.

	(Cleanup)

	* pan/acache.c: use the acache_flush_on_exit global instead of using
	gnome_config.

2001-06-10  Charles Kerr <charles@rebelbase.com>

	* pan/filters/*[ch]: landed filters into CVS.

2001-06-08  Charles Kerr <charles@rebelbase.com>

	* pan/group.h (group_chunk_string): added boolean specifying whether
	or not to try to share the string.  Common strings such as author name,
	Subject, References should be shared, but strings unique in the group
	such as Message-ID or Xref shouldn't be.

	* pan/article.c (article_set_header): the HeaderAction argument now has
	two possible values: DO_CHUNK and DO_CHUNK_SHARE, which decide how to
	call group_chunk_string().  The old behavior of sharing all strings
	added unneeded overhead for the group's GStringChunk.
	* pan/gui.c:
	* pan/nntp.c:
	* pan/message-window.c: sync.
