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.
