o = bug fix + = addition x = change 2006.08.24: o more queue crazinesses fixed. The wiser among you may want to sit out a few rounds :) 2006.08.22: o If any articles are queued, the transfer to queue function just queues/unqueues the highlighted articles instead of transferring. o Editor window always opens maximized 2006.08.20: o If you have two or more groups opened, change the score file, then reload it, you will get repeated access violations when refreshing headers in the group(s) that was/were not active when you reloaded the score file. Fixed. x Avoid redrawing the whole screen when updating the queue. This should ease the screen flashing introduced in the previous test version. x While decoding files, you can add more to the queue by pressing F4 (or whatever you mapped Decode to). Previously, you have to use the space bar or click in the Queue column. This should be less baffling to newbies. I don't know why I had it this way all these years. Stupidity reigns, but it's never too late to learn :) 2006.08.05: I noticed Xnews's CPU usage was way too high while downloading binaries. Turned out when you have huge number of items in the queue (>10,000), removing the first item in the queue took way too long (basically, I was basically refreshing every item in the queue, duh!) So I made a bunch of optimizations and adding to/removing from the queue should be a bit faster. The downside is the list tends to flash more. Also: you can now insert more than one item to the top of the queue (highlight, then shift+space). If the items are already queued, shift+space will move them to the top of the queue. 2006.06.28: o Some binaries posters place 1st part of the file as followup to the text file, and subsequent parts as followups to the 1st part. This throws off Xnews and causes it to thread the multiparts incorrectly. o some other things I forgot. 2006.03.14: + Added very simple user actions (commands). In keys.ini: [AActions] usr=; Yes, that's AActions (not a type). where is name of your action, must begin with usr followed by at least 1 letter or number (no space). is a brief descriptive name is a comma separated list of actions to execute Example: [AActions] usrMarkOthersRead=Mark others read;acaInvertSelection,acaMarkRead usrMarkOthersUnRead=Mark others unread;acaInvertSelection,acaMarkUnRead Right now, when one action fails (e.g., it's disabled), I just go on to the next one. Further refinements to come. Oh, I do NOT do any sort of error checking, so don't be a wise guy and do this usrLuuYouSuck=Lets see what this does;usrLuuYouSuck You'll only be hurting yourself! Btw, have I regaled you with my philosophy of programming? In short: computers are so dumb (no thanks to coders like me) that until there's some quantum breakthrough to make it possible for the computer to empathize with the human user and really understand what the heck s/he wants to do, it's pointless to try to make them user friendly or fool proof. You'll only raise expectations and produce dumber users. Much easier to make software that's hard to use if not inscrutable. Train the users to fear your software and to expect strange if not ruinous behaviors at every turn. This way, if something does work, they are amazed and grateful. Your users will also be smarter, more knowledgable and resourceful, and won't bother you when things break. And the world will be a better place for it. :) 2006.03.07: o The Xover count is wrong if you specify LimitPerGet but are actually fetching fewer than that number of headers. + Added some sanity checking for the first msg/last msg/msg count stats returned by the GROUP command. Provided I haven't broken something else, I'll put out a release version next :) 2005.10.18: o Corrected application background color. + In folders window, non-empty queue folders are now in bold. + In Xnews.ini [Xover], if you set PromptThreshold to -1, Xnews will automatically get LimitPerGet headers without prompting. PromptThreshold: 0 = never prompt (bring up the Open Special dialog) -1 = get LimitPerGet headers without prompting. n, n>0 = prompt if # of available headers > n. 2005.10.03: x Remove < > from Message-ID when Googling. x (NZBExport) Encode special chars more scrupulously for better compatibility. 2005.09.25: + Added NZB export. Export QUEUED* articles to an nzb file which you can use in an external binary downloader**. Use right click menu or assign a key to acaNZBExport. * It's probably more logical for this to work on SELECTED articles, but well, I have my weird reasons. If you don't have any queued article, it'll automatically queue selected articles for you. ** Because there's no way to know the actual segment size of the file, I am using the size of the article instead, which includes headers and encoding overhead. Hopefully, the download program only uses this number as a size estimate and does not use it for any sort of error checking. x Per Blinky request, no more ?? in version :) ??.01.30: + Per req, you can now specify a port with SMTPHost using the usual host:port notation. o ??.01.14 miscounts multiparts. x Minor cosmetic changes. ??.01.14: Happy new year! Some unpleasant person is sending spoof messages to binaries groups. The msgs' headers look like binaries but they have single-line or empty bodies. This is causing Xnews users grief, which I take as a personal affront :O So here's a little quick fix. 6.12.01: Hi all :) When a yEnc(oded) article has a CRC error, the program gets stuck in a loop where it keeps trying to decode the same file if you have alternate server(s) defined. I tried an hour trying to fix this bug and gave up (it's frightening, but I keep finding new depths of dumbosity within). Instead, I decided to Deal With the Problem By Not Dealing With the Problem(tm). So, if you've been plagued by this bug, add this to Xnews.ini under [Misc] IgnoreYEncCRCError=1 Voila! Actually, this works out pretty well since most of the time, the file is still usable with PAR2 and what not. Happy holidays :) 6.08.25: o SMTP password in Setup / Misc not saved! 6.07.17 + quickie hack to add SMTP authentication (plain old LOGIN). Go into setup dialog to add user name and password to smtp as needed. 6.02.16 o yikes, uudecoding still broken. 6.02.15 o Oops. Completely broke UUdecoding! 6.02.14: o single articles sometimes shown as partially read in folders. o Newsrover likes to UUencode the last line of each part in a mpb with a shorter length than the other lines. This trips up Xnews' bad data detector. I tweaked the rule a bit to fix it. (Why do people still use UU anyway?) o This version mostly addresses the articles created out of order problem. Briefly: news servers don't always number articles sequentially but leave gaps in the numbering that are later filled in -- a practice known as "backfilling." Xnews doesn't take this into account, so it assumes, for example, that when it asks the server for headers for articles 1-10 and receives headers for articles 1-3,5,8-10, those are all the headers it will see in that range (1-10). Articles 4,6,7 must have dropped off the face of the earth as far as Xnews is concerned. If you now refresh headers, it will start from 11-. If you do a catchup, it will set the read count to 1-10. If later on the server adds an article and numbers it 4,6,or 7, Xnews will not see it, and you'll miss these articles unless you do a "refresh headers special" and set the slider backward. How often this happens depends on the server you're using and your own news reading habits. It's less of a problem on small servers with a single spool vs. large ones with multiple synchronized spools. It's also less of a problem if you only get headers once a day rather than keep a group opened and refresh headers every 10 minutes. So now for each server I added an option called "Server creates articles out of order" (Setup dialog / Servers tab). If you check this box, Xnews will go back and try to fill in the gaps. In the example above, it'll try to pull headers for 4,6,7 when you do a "refresh headers" and will set the read count to 1-3,5,8-10 when you do a catchup. This way, should the server fills in the gaps later on, it will not miss 4,6,and 7. You'll also notice that I added two more commands: "Refresh headers ignore gaps" and "Catchup ignore gaps" if you have the "Server creates articles out of order" option checked, and "Refresh headers fill gaps" and "Catchup preserve gaps" if you have the option unchecked. I don't feel like typing anymore so I'll let you figure those out for yourself :) If you're totally confused, just ignore the whole thing and go on using the program the way you have for the last X years. 6.01.10: fixed the 6.01.08 fix (multiparts show wrong count in Lines column) 6.01.08: Apparently, some jerk is corrupting Usenet binaries by spoofing articles. This is causing Xnews users problems b/c of the way I thread multiparts, placing the later (bad) articles first. The only work-around for the user is to manually queue articles, which is a giant pita. Anyway, I made a one byte change to fix this. (If you're not aware of the problem I'm describing, then you don't need this fix.)