Development history

NewsPro v2.7+
   This release features the (automatic/manual) downloading and saving attachments capability. Since dumping all attachments to one directory would be not a wise approach - the program remembers directories for every manual selection; as to automatic capabilities - there is a possibility to assign a directory to every filter on per newsgroup basis or to use default newsgroup directory. The program maintains persistance between sessions for tasks scheduled for saving, if the save tasks option in the properties (the general pane) is checked.
   The automatic mode is tuned in the properties, the watch/auto pane. The save radio buttons in 'common settings' and for newsgroups in question should be checked, as well as directories should be associated with newsgroup filters. That allows to disable the feature at all or for some newsgroups without affecting the filter list settings.
   Notice that program checks for completed attachments every 5 minutes. To force the procedure or to control other aspects of the process look at the tasks menu.
   The program is conservative to every abnormal condition while saving - it leaves messages in the newsgroups in the case of any problem such as duplicate names etc.
   Text of deleted messages is logged in SavedAttachments.txt in the NewsPro directory if the corresponding option in properties -> general is checked. The 'delete bodies when deleting headers' and 'enable delete on save attachments' options are taken into account during automatic saving; 'ask for delete on save attachments' is ignored.
   Getting new headers when a view with a large number of partial messages is open is several times faster and smoother, especially when partial messages with large number of parts are present.
   There was fixed a problem with dynamic non-displaying partial messages introduced some time ago.
   Autosave feature now creates/deletes the save progress dialog every time when its visibility is enabled/disabled. Just hiding it wasn't enough since the focus switched to the invisible window, now it is just non-existent.
   The posting pane in the properties features two edit boxes "header" and "footer" for wrapping the message text.
   The keep-alive feature: connections are reused for different tasks, that especially useful when servers limit the number of connections 'per group'. The program just saves connections in the connection pool for subsequent reuse. Still it will do nothing to prevent their timeout initiated by servers to be nice toward other users (usually 10-15 minutes).
   Running multiple instances (one per database). The feature works only for registered users (not intentionally). To make use of the feature run the program with a profile name, (the default profile name is "NewsPro"), e.g. C:\Program Files\NewsPro NewsPro_Profile_2
   For modem users in countries with variable rates - now tasks are suspended exactly with the end of an interval of activity - the program disconnects immediately.
   The option to add headers like "X-No-Archive: Yes" or whatever is needed (properties -> post pane).
   Rot13 transformation for article views (context menu) as well as for the post dialog (button).
NewsPro v2.51+
   The pause button and the option to set bandwidths - separatedly for scheduler active intervals and the rest (properties, tasks&scheduler panes; 0 = empty = no limit).
   Automation capabilities refined, especially for modem users (auto hang-up is only an option now); for LAN users - scheduler is able not to suspend tasks and just to switch bandwidths. There is an option to switch off the scheduler on start (tasks menu).
   Dial-Up revised - there is an option to set the number of redials with different intervals which is reset on the beginning of every scheduler active interval. Asynchronous behaviour. An option not to connect on start (dial-up menu). After disconnecting during scheduler active interval - the automatic connection (when auto dial enabled) will be performed only with the next active interval to prevent immediate redial (but user may use the menu dial option to resume connection immediately). To stop the sequence of dials - just use dial-up menu -> hang-up at any moment including pauses between dials.
   The program can automatically check for updates (just by reading - an option in properties, general) - right after the first body has been succesfully read in a session. If socks firewall is enabled - the connection will be made through it.
   The server aliases dialog allows to delete servers right away.
   Faster scrolling of newsgroup views with large number of partials - the compromise is in showing only approximate number of lines in the lines column (properties -> general, default behaviour).
   For firewall users the socks option is set for each server separatedly (i.e. whether a server uses socks) so local servers can be accessed directly.
   An option to define types of attachments which will display a warning message box before launching them (the article pane in properties).
   Dialog box before windows shutdown while newspro is running.
   Better error log tracking has been introduced - an option to upload stack trace, OS&Dll versions after exception (nothing else, just an extract from ErrorLog.txt and only after a crash) or submit anonymous bug report with OS&Dll versions (properties). The option can be disabled for registered users (properties->general->upload stack trace), although it is not recommended.
   The source code of non-nntp connections (checking for updates and bug/crash reports) is freely available on request with additional non-formal description for those who cannot read the code.
   Saving selected attachments is about 1.4 faster. Better look for filter editor. Message text is written into the log for saved attachments.
   In v2.53 displaying jpeg images was accidentally disabled, as well as a bug introduced - former reported by users (thanks), latter reported automatically and all promptly fixed within 24 hours since the release.
   An option to save failed articles among saved article tasks (properties->general). Sometimes task list wasn't saved on exit, it was fixed. It was also found that the compiler removes some essential for diagnostics code during optimizations. Although it doesn't influence the program functionality from the user point of view - it may hide problems that can be otherwise easily revealed - it was also corrected.
   Database files are flushed on NewsPro exit - not just relying on Windows - to enforce database intergrity. Mistakenly the version in the dialog box is shown as v2.6, otherwise all is in order.
NewsPro v2.5
- Schedule, watch and automation capabilities (see corresponding selection topic).
- The download article priorities concept has been refined (see the same).
- Folders have properties along with newsgroups (now properties->newsgroup/folders).
- New "Persist" sort-by option has been added which remembers the last sorting order (default now).
- You can change settings for selected newsgroups/folders/servers by selecting several entries (the same principle for different panes), entering desired values and pressing the 'set' button.
- 'Retry unsuccessful articles' every user-defined number of minutes (properties->general). if you want to use this feature on partial messages - uncheck the 'autocancel on errors' entry in the partial menu, otherwise on error with getting one part remaining parts will just be cancelled and not retried.
- Server list is exported/imported with passwords (clear text :) ).
- 'Copy subject' and 'Copy author' entires in newsgroup context menu (e.g. for transferring to filters through clipboard).
- Numbers of max. tasks and retries for a new server moved to the server pane in properties (more appropriate).
- Saving dialog now displays the directory where saving is done and has unique number.
- Solution to full disk problem - now a limit is set in properties->general (low space). Tasks are suspended when space is below that value and resumed after disk space has been freed.
- There is an option to set the number of retrials for redial in the case of unsuccessful dial-up connection (see dial-up -> connection properties).
- There is a possibility to write info about saved attachments in log file that resides in the newspro directory (SavedAttachments.txt). The format is human/machine readable. Look at properties->general->log saved attachments to activate.
NewsPro v2.4+
   Straightforward installation; install.txt removed from the package.
   Several tips added in relevant dialog boxes, partly handling the full disk condition.
   Far faster marking for download in the case of partial messages in replies.
   In article views all relevant options from newsgroup views with the same shortcuts were added when missing. Fixed non-deleting bodies for partial messages from article views and jumping focus when deleting bodies with no servers from article panes in split windows.
   Fixed inability to mark for download selected partials in replies.
   The next/prev thread shortcuts added (Ctrl+F5/F6).
   Approach to selecting has been changed. Shift+Click now never clears previously selected. Ctrl+Click selects an item without affecting other selected as it was, but now from this point Shift+Click or Shift+Arrow Up/Down will select items around that clicked item retaining previously selected, so it is possible to have several selected stretches at the same time. Just clicking an item will clear all selected items.
   In the light of the changes I had to reorganize shortcuts, especially the functional keys. Current layout: F1 - Help, F2 - Article properties, F3/F4 - find next/previous; F5/F6 - next/previous header; F7/F8 - next/previous body; F9 - Deja; F11 - batch/user mode; F12 - automark for download. Also instead of switching mark read/unread there are now two separate shortcuts for the focused item Ctrl+M - mark read and Ctrl+U - mark unread since in article views the change is not visible.
   Partial messages now are saved asynchronously like other messages - no waiting. There is an option to automatically delete headers after successful saving attachments and an option to ask before deleting them (only once per one batch) - see properties -> general - 'enable delete on save attachments' and 'ask for delete on save attachments'. Both options are enabled by default. Several streams can be saved simultaneously.
   Fixed a recently introduced bug that led to an exception while subscribing to selected groups from the newsgroup list window.
   Light refinements of v2.43. Removed rare small delay in appearing of the 'save selected' progress bar dialog (detected only while trying to save attachments to very slow network drive). Selected items are now cleared upon launching a saving operation on them. For selected items currently in the process of downloading headers are never deleted after saving their attachments.
NewsPro v2.3+
   Fast synchronizing with newsservers (rescanning headers) has been added. The feature is especially useful for getting multipart messages. Invoking the feature ensures that the database reflects the current situation on newsservers. If a newsserver deleted or added headers in the middle of the list - that will be reflected in the database. The rescan headers button is located to the right of the get new headers button. One relevant item has been added to the properties (general pane): 'Get new headers after rescan'. By default it is checked, i.e. after synchronizing new headers will be downloaded.
   New colors has been added to the task manager bars for the get new headers pane because now program doesn't just download new headers, but also searches, rescans, etc.
   For searches - blue means progress through newsgroups, green - searching in a newsgroup and purple - downloading search results from the previous 'green' part.
   For rescanning (synchronizing) - green means scanning through a newsgroup, purple - getting headers that were added out of order and blue is downloading new headers as usual.
   Enhanced restoring procedure with restoring deleted/read also from the interrupted session.
   The task manager window has now scrollable controls for current tasks so that long subjects are fully readable.
   An option to define what header fields in what order to show or to hide in article views and whether to scroll the article to the body on its opening. The option is located in the properties - the 'Articles' pane.
   Eliminating the necessity to put the leading and trailing asterisks for wildmat expressions for all occurences including search on servers with retaining all possible options.
v2.39: (standard customization)
   An option (the edit menu) to automark for download (e.g. just on clicking an item or scrolling newsgroup views). The 'clear selected' entry in the context menu to handle selected without the necessity to disable the automark option.
   An option to open newsgroups with the split window (the window menu); storing the split window ratio between sessions.
   Split windows: moving only among article bodies in newsgroup views with F11/F12; Alt-Up, Alt-Down etc. now work in a symmetric way in the newsgroup and article panes with preserving the focus . F4/F5 are used now for scrolling the newsgroup pane with retaining the focus.
NewsPro v2.2
   Wildmats with boolean expressions have been added for search in newsgroup views and filters - the code works as fast as direct searches and is very terse. Wildmats are like wildcards, I just fixed the case sensitivity of the original source code and added boolean expressions with wildmats as operands: '^' - NOT, '&' - AND, '|' - OR from the highest to lowest precedence plus nested parentheses. Also see the filters and filter editor topic for examples.
   The search on newsservers option makes use of the XPAT command that given an (original) wildmat pattern searches a header (subject/author/...) for the pattern. The command works on one newsgroup, but NewsPro makes it possible to enter a list of newsgroups as well as allows case-insensitive searches. To enter a list of newsgroups easily the 'copy selected' and 'copy all' entries have been added in the newsgroup list to copy newsgroups into clipboard fast.
   The trick is to create a newsgroup with the '#' as the first symbol in the name, like '#search'; when the get new header button is pressed, a dialog will appear. After entering newsgroup names, the pattern, choosing a field and pressing OK a search will be performed. Read also the help file or the search on servers topic for more details. Creating as many 'search groups' as necessary is possible, each with its own search criteria; all is asynchronous as always. Search parameters are saved between sessions.
NewsPro v2.1
   The newsgroup view context menu has been rearranged, so most frequently needed items make up the main menu.
   Priorities of marked for downloading articles can be now changed dynamically by marking again already marked articles, after desirable downloading priority has been set.
   Articles are marked for downloading and cancelled faster.
   Fixes: fixed ignoring selected from the filter dialog messages for newsgroup with threads; eliminated out of memory dialog that was occationally appearing while opening virtual groups; correct deleting bodies while deleting headers in threads; other miniscular fixes.
   The system (Windows) support is considered less credible, so more checks were placed to ensure that critical system services are working properly.
   Some default settings were changed according to needs of most users. If the program has been already installed from a previous version you may wish to change them manually:
      Tasks -> Minimize overall downloading time: unchecked (downloads articles and parts of partial messages in order).
      Threads -> Enable threads for a new window: checked
      Partial -> Partial messages in replies for a new window: checked
      General pane -> Reset groups on server errors: unchecked
      General pane -> Always optimize database: unchecked (lengthy)
NewsPro v2.0-v2.07
   Improved task manager window.
   Series of heavy tests was performed to enhance reliability.
   Number of retries can be set for each server separatedly; when the number for a server is set to zero - the server is effectively disabled. The feature can be used for dealing with servers that are temporarily out of service or overloaded and need more retries (e.g. to deal effectively with the "400 Too many connections" error).
   Article tasks are cancelled immediately, so after accidental cancelling there is no necessity to wait for the thread of execution to exit.
   The split/unsplit button is checked when the newsgroup window is splitted; when the article pane is too small and almost invisible - articles will be opened when focus is changed in the newsgroup pane - e.g. for partial messages that takes some time.
   SOCKS5 support has been added. It allows to work through SOCKS5 firewalls.
   Many users dislike the 'workspace' style, so folders have been added to the newsgroups and servers window to make possible to ignore this style completely. Also folders can be hidden/shown on window per window basis - see the context menu for the newsgroups entry and the show folders entry in the properties for initial setting.
   Partial messages are downloaded in order with the purpose to receive a complete article (track, song, movie ...) as soon as possible.
   The "Delete bodies of partials with missing parts" entry in the partial menu. Partial with missing parts may be not shown for newsgroup views with partial support. Using the option will delete bodies of such partial messages, without necessity to manually remove them in a newsgroup view with partial support disabled.
New features in v1.79x
Downloading priorities for article bodies
   9 priority levels can be set for downloading article bodies. Articles marked for downloading when a higher priority level is set will be preferred during scheduling. See description in the selected topics above.
   To the 'no more default newsserver' - 'no more newsgroups' should be added. Not only newsgroups can be subdivided into folders (and folders of folders...), but folders are operated upon as a usual newsgroup as well as any subset of newsgroups can be opened as one virtual newsgroup.
   Newsgroups are organized in folders. To create a folder - use the 'new subfolder' entry in the 'Newsgroups' or folders context menus. To move newsgroups to folders - select newsgroup(s) in question and press the right mouse button on 'Newsgroups' or a target folder name in the workspace. Press 'move to folder'. Deleting folders doesn't delete newsgroups in them. Folders behave alsmost as usual newsgroups - getting new headers, cancelling getting new headers, resetting, posting etc. The idea of a virtual group was proposed to me by two users independently, I just developed it further.
Filter editor
   You can edit filters in the filter editor. Imagine a newsgroup. 'Select' means select records, satisfying the criteria. 'Extract' means select and extract all selected records (i.e. hide all other records). 'Ban' means select and hide all selected records. 'Selection scope' defines what records are subject to the current select operation, e.g. checking 'unselected' will remain previously selected records unchanged etc. All these operations maybe tried with the selection dialog on a real newsgroup to understand how they work.
Kill filters
   Kill filters can be defined for every newsgroup. A new newsgroup gets filters from the 'default' entry (the filters that are there at the moment). To define filters look at the properties dialog, the 'Filters' pane. Names of the newsgroups that have filters are distinguished with the green color; the red color means that a previously defined filter (file) was deleted. In both list controls multiple selection is allowed for easy copying and pasting. Number of filters for every newsgroup basically doesn't influence performance. Every filter should have 'extract' or 'ban' (not 'select') in its last line because otherwise the resulting compound filter would depend on the order of appliance. Redefining filter for a newsgroup as well as editing a specific filter will be in effect for all subsequent tasks immediately after saving the filters or pressing the Apply or OK button in the properties dialog. Messages are filtered on entering the database; those that are filtered out enter the database as deleted headers and can be still accessed as such.
   Deleted headers aren't shown in threads.
   A new context submenu in newsgroup views operates on (sub)threads.
   Deleting a parent deletes all its children in the (sub)thread. All new messages are checked for being a child of a deleted header even after all its parents left the database. That effectively prevents such messages from appearing in newsgroup views, unless viewing deleted headers was activated.
Partial messages
   Partial in threads are shown as one entry.
   Partial duplicates aren't shown any more although they've been previously treated correctly.
   An option to hide partial messages with missing parts (by request).
Monitoring servers with posting
   The program constantly checks servers for posting, so servers that enable posting will be shown with the green colour in the properties dialog (posting pane) and will have an icon with an envelope in the workspace window.
Other changes and fixes
   In the selection dialog two buttons added - delete (selected) headers/bodies.
   An option (default, properties dialog) to save message text and source with the name derived from subject and author with the date of posting (by request).
   Nice message box for reporting servers-aliases that enables to delete them before closing the box.
   The program is smarter and more tolerant to malformed messages.
   Deja news: from newsgroup views (launching without actually downloading bodies), the search string can be now adjusted in the properties.
   An option to disable deleting opened attachments from the temp directory while the program is running - e.g. JukeBox for playing mp3 plays a list; the files may be deleted before playing. The option to manually clear the temp directory has been added in the file menu.
   The saving mode dialog when saving attachments etc. was moved to the properties - that spares one click.    The reset database option allows to keep info about previously deleted/read headers, so now it is never lost.
   The negation operation has been added in the selection&find dialogs/filters.
   An option to save the article task list between sessions (properties). Also unsuccessful tasks are added to the list (clear errors before exit if that is not desirable).
   When the task list is rescheduled upon restart - tasks are launched in the same order, except for previously unsuccessful tasks.
   The shutdown code has been reviewed, partly an option for slow shutdown (for old unstable Win95 versions?) has been resurrected (properties).
   Now the program gives a warning when 25Mb left on the NewsPro drive. Also it handles itself attempts to write to a full disk by showing a small message box without forwarding the exceptions for automatic (but awkward) handling by the framework.
   The find function now looks also into collapsed threads and expands them if necessary.
From v1.7 to v1.74
Rigorous bookkeeping
   At last the approach to deleted headers and read messages has been reviewed. In the properties dialog the "Remember deleted/read messages for n days" entry has been introduced.
   If the user-defined number of days equals to 0 - the mechanism is disabled. Otherwise the program will remember all deleted/read headers for the number of days even after they left the database.
   Headers now are deleted through the database, so cross-posts will be automatically removed from all newsgroups (independently of the number of days).
   Still deleted headers are shown in threads but they have different color.
   The restore deleted headers option has been enhanced to enable easy undeleting some and not necessarilly all deleted headers. It works in this way:
   In a newsgroup press the 'restore deleted headers' toolbar button (Ctrl-Z). You'll see deleted headers appearing with different color. The button remains pressed. Undelete deleted headers with the help of the context menu or shortcuts (Ctrl-J or Alt-J for selected). Click the button one more time and remaining deleted headers will disappear. You have not necessarily to do that - all always will be handled correctly.
   Deleted/read headers leave the database when they are deleted on servers so they free the storage. If they come back - read messages remain read and deleted headers don't enter newsgroups, although they can be seen again among deleted headers. The track of deleted/read headers is lost after they absent from the database for more than the number of days (after last depature from the database).
   You should use the database backup if the information about deleted headers and read messages is considered as important.
   Resetting the database will erase information about deleted headers. All other activities will preserve it - including resetting newsgroups.

More task management
   Deciding what kind of tasks should have higher priority in the end I gave the option to define chances to run for every kind of tasks.
   So if we scheduled for download 1000 articles - we still can regulate other activities by changing the chances.
Limiting number of headers in newsgroups
   The properties dialog has been changed. A new page with newsgroup properties has been added as well as corresponding menu entries in the newsgroup pane in the workspace window.
   The 'default' entry defines default settings for newsgroups. You can redefine these settings for each newsgroup. The headers per server entry allows to limit the number of headers that read from a server (there is also the 'all' value). The rest of headers in the newsgroups maybe deleted or retained, for example if newsgroup already contains 800 headers, 500 new headers arrive and Headers/server is equal to 1000 - 300 headers will be deleted or not depending on the value in the 'the rest' column. The last three columns describe how each newsgroup will be open. E.g. for large mp3 newsgroups you can disable threads, enable the partial support and sort by subject for faster newsgroup opening. Actual numbers for number of headers in a newsgroup may be less than the 'header/server' value, when some headers are missing on the server. You need not to reset a newsgroup if you change the settings - the rest of headers will be downloaded even if they are older than the headers in the database.
   Limiting number of headers for non-critical newsgroups reduces the database size - the program works faster. Some servers may keep huge archives for selected newsgroups - and often only recent headers are required.
   My advice is to set for the 'Default' entry 'headers per server' to, say, 1000, 'the rest' to 'Delete'. For your favorite newsgroups set the 'headers per server' to 'all'. The speed will grow greatly and you will still have all recent headers from different servers.
Faster database
   Opening newsgroups is about 5 times faster (for the worst case, not always, i.e. for a large database with limited resources).
   The database structure has been optimized for large newsgroups - also with high thread density.
   Invoking the 'optimize database accesses' option in the file menu or enabling the 'always optimize database' option in the properties dialog will result in faster operations on newsgroups - opening, selecting etc.
   After the procedure the database tends to keep its optimized structure while a relatively small number of new headers enters the database.
   The purpose of the procedure is to rearrange database records, so that the most of hits were targeting the same disk location; the pages in question with high probability will be found in RAM without actually reading data from the hard drive - it drastically improves performance.
   Getting new headers now requires 4 times less disk accesses that results in smoother work in background and friendlier attitude towards other applications.
Small features
   Now uncompleted partial messages may be reassembled in the following way - for such an entry use Selected headers -> Multipart message (Alt-G) - all that for views with advanced partial support - a new article will be generated, reflecting the current state of the partial message.
   Now the temp directory is cleaned every 45 seconds and not just only on start and exit - once while listening mp3's I filled the directory with 700MB of files and got a full disk.
   You can see on which servers an article is residing by using the properties entry in the context menu (Alt-I or F6).
   A progress dialog reflecting saving partial messages has been introduced with an option to cancel the operation.
   Partial messages are shown in threads with all advanced capabilities, although other parts in threads are also shown - partly they may be needed in for repost of selected parts.
   I found a better solution for replies to partial messages, that makes the 'partial replies' button unnecessary. Now replies with the number of lines less than 250 are not considered as partial unless the article in question is the last part of a partial message (we have still the manual option) - the replies will be shown correctly as 'normal' messages. So I removed the 'partial replies' button from the toolbar, the shortcut Ctrl+Space corresponds now to the 'enable partial' toolbar button and also one more shortcut for symmetry: Shift+Space for the 'enable threads' button.
   Before invoking the restore database from backup procedure an option is given to reset the database in case the backup was corrupted (never saw or heard that but in theory it may lead to an unpleasant situation).
   The trivial option in the file menu 'Save database and restart' terminates all tasks and restarts the program saving the current database state - useful after downloading a large number of headers in Win95 or Win98 where any application may crash the system.
   New shortcuts for downloading threads and for the 'all headers' context submenu in newsgroup views.
New features and fixes in v1.7.0.7
- Search in article bodies from newsgroup views
- DejaNews
- news://ServerName - adding the server on doubleclick
- Newsgroup names export/import (like server list)