NetNewsWire 3.1 Change Notes

9 January 2008

This page lists the changes in NetNewsWire 3.1 (since 3.0). You can download the current version via the NetNewsWire home page.

New features

Bug fixes, improvements, new features

Warning: we go into tons of detail here. It could get kind of snoozy.

News items and the nnw forum pipe

Fixed a bug processing items in the NetNewsWire forum pipe feed http://pipes.yahoo.com/pipes/pipe.run?_id=SDvmdwr_2xGxVsSBJZhxuA&_render=rss — it was wrongly marking news items as updates of other news items in some cases, when the news items were actually different news items.

(Yes, this is the feed I use to read the forums.)

Sleep

Fixed a bug that prevented automatic sleep for some people.

Safari 3 & Leopard compatibility

Fixed a compatibility issue with Safari 3 — when a text area or input field of some kind had focus, NetNewsWire would process spaces and 0,9 etc. as commands rather than as typing into the field. Fixed. (This came up due to a change in WebKit, which was updated along with Safari 3.)

Folders

There was a bug where unsubscribing from a feed wouldn’t delete any news items that appear when you select the folder. Fixed.

Scrollbars and web pages

Fixed a bug where opening a popup window (which gets opened in-place in NetNewsWire), could cause scrollbars to disappear for that view, even after hitting the back button.

Widescreen plus vertical tabs

Fixed a bug where closing the last vertical tab would move the widescreen view splitter when it shouldn’t.

Column width memory

Better remembers column widths at startup. (Particularly for the last column.)

Followed status

If you click a link inside the description pane, the news item will now get marked as followed. (This is one of the very oldest bugs in NetNewsWire. It’s older than WebKit. It’s older than Jaguar!)

“Podcasts” playlist

If you tell NetNewsWire to send podcasts to a playlist named “Podcasts,” it would fail, because iTunes treats the “Podcasts” playlist specially. So now if you tell NetNewsWire to use the playlist named “Podcasts,” it tells iTunes to use a playlist named “Podcasts (NetNewsWire).”

Cmd-. and tabs

If a tab is in front, and the page is loading, cmd-. will now stop the loading.

Renaming a feed display

When you rename a feed in the Info window, the title of the Info window updates as you’re typing.

Subs list drag and drop selection

When you do drag-and-drop in the subscriptions list, the selection follows the objects rather than the indexes of the objects. (In other words, it works as you expect it to.)

Select-same-item bug fixed

If you have a news item selected in a feed, then click on its parent folder, that same news item would get selected. However, you might not want that, since you might have marked it as unread and now it gets marked as read.

HTTP authentication crash bug fix

Fixed a crashing bug some people were getting with a timed-out feed download that returns a 401 status code.

Subscriptions list and unread count color

The unread count chiclets go gray when NetNewsWire is in the background or the main window is not the frontmost window. (See Mail etc. on Leopard for the same behavior.)

Subscribing: don’t select feed

When subscribing to a feed, the feed is not automatically selected anymore. Exception: when there is no selected feed, then the new feed is selected. (As long as you’re not in a tab.)

Clippings

If you select the root Clippings folder, and hit the Delete key, it will hide the Clippings folder. A sheet tells you it’s hidden, and that you can show it by choosing View > Show Clippings.

You can now delete a clipping using the Delete key — you don’t have to choose the menu item.

Now gets a gray folder icon.

Fixed a bug syncing clippings folders with NewsGator.

In place of the unread count, clippings folders now display their items counts. The background color is gray, to distinguish it from unread counts. (But it’s otherwise the same shape and position.)

Clippings are now included in search results.

Fixed a bug where .Mac/FTP syncing could wipe out your clippings. (Though clippings are not synced via .Mac/FTP, doing a sync shouldn’t wipe them out, of course.)

Fixed “Jonathon’s crash” — a crash that was happening while syncing clippings folders. It was trying to do some main-thread-only stuff on a background thread.

When you clip an item that has been flagged, the clipped version is not flagged. (This way you don’t get duplicate items in your Flagged Items list.)

Syncing: if a clippings folder has zero items, don’t send the sync token, to make sure we’re getting everything.

If getting the contents of a clippings folder results in an error, jettison the sync token, because probably the person has switched from NGES to NGOL or vice versa.

Memory use for unattended NetNewsWire

It’s possible that people who leave NetNewsWire running for hours without interacting with it in some way are having memory use go up and up, since no events are processed and thus autorelease pools are not drained.

See Mike Ash on the subject: http://www.mikeash.com/?page=pyblog/more-fun-with-autorelease.html

I’m following Mike’s advice and posting an NSApplicationDefined event at strategic times, which should drain the pools. We’ll see.

Empty rows

Fixed a bug where empty rows could appear for a group or the new-items feed when deleting read items has left everything deleted.

Menus

The keyboard shortcut for Send to Twitterrific is now ctrl-T. (The old version, ctrl-1, conflicted with Spaces.)

Previous Page and Next Page now have cmd-9 and cmd-0 shortcuts. (These were alternate shortcuts for the tabs, but I had to steal them. You can still use plain old 9 and 0 for the tabs.)

Add to Clippings now uses cmd-option-S instead of cmd-shift-G — because cmd-shift-G is the standard for Find Previous. Find Previous now uses cmd-shift-G. (Does it seem like I’m running out of keyboard shortcuts? It’s because it’s true.)

Flagged Items contextual menu

The Remove command in the Flagged Items contextual menu now works.

Browser

The gear menu now has one command to open browsing preferences instead of one for browsing and one for HTML.

NewsGator News box

The thumbnail box — in the lower left corner of the main window — is now a tabbed box. It has two items: NewsGator News and Thumbnail.

When NewsGator News is selected, it displays the top news item from the NetNewsWire product feed: http://blogs.newsgator.com/product_news/netnewswire.rss. It’s a new feed. Mostly it will be NetNewsWire-related, but sometimes we might have company news or whatever that goes in there. In addition to the news we display links to the forum and mailing list.

The Thumbnail tab still displays the thumbnail of the home page of the selected feed.

To open and close this box, it’s just as before — click the rectangle-ish button in the very lower-left corner of the main window, or click the downward-pointing arrow next to where it says “NewsGator News.”

NetNewsWire will read the feed once a day.

Leopard Crash logs

Crash logs are now sent to me on Leopard too. (On Leopard, crash reports are apparently stored one per file. Sounds like a good idea.)

Vertical tabs and double tooltips on Leopard

Figured out how to get rid of the double tooltips on Leopard. Now just single tooltips.

Vertical tabs and option-click on close box

Option-clicking on a close box in the vertical tabs now closes all tabs except the news-items tab. (Which matches the behavior of the horizontal tabs.)

cmd-leftArrow, cmd-rightArrow keys in web pages

Fixed a bug where cmd-leftArrow and cmd-rightArrow would go back or forward when you were editing in a text view of some kind. No more — the standard cursor movement happens.

Preferences

Changed Appearance to Fonts, since it’s just font settings.

On Leopard, now using standard Leopard preferences icons for General, Colors, and Fonts.

Colors

On Leopard, the Colors window is gone — it’s been moved into a Colors pane inside the Preferences window.

(There are complicated and boring reasons why I didn’t also do this for Tiger. Eventually, everyone will be on Leopard anyway.)

Feed button in browser: crashing bug fixed

I see a bunch of on-Leopard-only crashes when finding feed links in a page (for the feed popup button in the browser). The crash came when constructing a tidied NSXMLDocument from the page source.

To work around the crash I switched to using the DOM to find feed links. This is a better approach anyway, because it means I don’t have to create a new tree structure for the page — we just use the DOM, which already exists. So this ends up as a performance fix, too.

Feed button in browser: UI

Fixed some updating bugs, so the button is properly enabled and disabled in some cases when it wasn’t.

New storage system

A big problem with 3.0 was that each news item was stored as a separate file—and this caused way too much disk access for some people. It was slow. So we took the previous storage system (from NetNewsWire 2.x) and updated it some. News items storage is much, much faster than it was in 3.0.

NetNewsWire now stores the news items for a feed together. One file per feed. This was how NetNewsWire 1 and 2 stored data — so we’re going back.

We’re not going all the way back, though — there have been some changes. It’s not exactly the same.

The first time you run NetNewsWire, it will have to convert old storage to new storage. This may take a few minutes, depending on how much data you have. The next time you run NetNewsWire the startup time should be more normal. (On my machines it’s about a second, but it will be different for different people.)

Feed data and news items are stored in a new folder, Feeds.noindex. (In the ~/Library/Application Support/NetNewsWire/ folder.)

If you have made backups, you can delete the following folders (in the ~/Library/Application Support/NetNewsWire/ folder): FeedData, FeedData.noindex, and NewsItems.

Provide NetNewsWire Feedback menu item

In the NetNewsWire menu is a new menu item for providing feedback. It’s kind of like with iPhoto etc. — a web page opens where you can write your feedback.

At this writing, the page is just a 404 — but it will be live soon. (Hopefully by the time you’re reading this.)

Combined View crash bug fix

NetNewsWire 3.0’s Combined View triggered a crashing bug in WebKit that we could never workaround. Crashes were frequent. This was fixed by writing a new Combined View.

Combined View: sticky group header

The group header sticks at the top of the Combined View — just a little bit like the contacts list on the iPhone. This way when you’re reading an item you can easily see what group it’s in. Note that the header at the top does update as you scroll.

When using arrow key, space bar, or go to next unread, the Combined View keeps the selected item at the top of the view. This way you just look at the same place (the top of the view) for the title. (It can’t do this with the last few items on a page, of course, depending on the size of the items.)

You can set the number of items per page in the preferences window (General pane). The more items per page, the slower it loads.

When a webview has focus, page up and page down keys now work as expected.

Combined View: Pagination

In order to perform well, it now displays items in pages, with 20 items per page.

There’s a page control at the bottom right of the window, and there are commands and keystrokes for navigating pages. Things like Go To Next Unread, the space bar, and arrow keys act as you expect them to — pages are navigated-to as needed. You can still go through the news with just the space bar.

Combined View: Grouping

Items are grouped by source, date, etc. — it depends on your sort column. (There are no groupings when sorting by title.)

The look of the groupings is designed to be unlike the look of the titles, so that’s it’s easy for the eye to pick out one or the other.

(The groupings also give your eyes hand-holds as they climb down the page.)

Combined View: Footer

In addition to the page control and acting as a progress indicator…

The footer at the bottom contains the name of the item selected in the subscriptions list. It includes the unread count of the selected subscription (if > 0).

(Why a footer instead of a header? Because usually you’ll be at the bottom of the page, on the last item, when you want to know how many unread items there are. That’s when you’ll want to go to the next page, and that’s what most people will use the page controls for — the next-page button.)

Combined View: One-line summaries

When an item is collapsed, the first line of the description (or summary, if in the feed) appears below the title. This gives you way more context than titles alone, and makes collapsing items actually somewhat useful.

Combined View: Progress Indicators

Each title background works as a Safari-like progress indicator for the web view below it. You don’t always see it, but you can see it with items that have (for instance) a big graphic. (If you need an example, try Savage Chickens http://www.savagechickens.com/blog/atom.xml).

The control at the bottom of the Combined View is a Safari-like progress indicator for the entire view.

Combined View and auto-collapsing

The Combined View no longer automatically collapses items after 300. It did this for performance reasons. But since we’ve added pagination, we no longer need this behavior.

Combined View: Menu commands

Commands for previous and next page appear in the Go menu.

Mark All as Read and Go To Next Page appears in the News menu.

(These commands have keyboard shortcuts, of course.)

Combined View: cut-off images fixed

The images-cut-off-at-the-bottom bug was fixed.

Combined View: configuration

You can now set the title font via Preferences > Appearance > Combined View titles.

You can turn on and off the one-line summaries for collapsed items: see View > Layout > Show Summaries for Collapsed Items.

Combined View: mail contents

When using the Combined View and doing File > Mail Contents of This News Item, the generated email message now includes the title of the news item. The title is also a link.

Combined View contextual menus

There are now real contextual menus for the Combined View webviews.

Combined View: mark all as read changes

News > Mark > All as Read marks everything in the feed/folder/whatever as read.

News > Mark > Page as Read is new — it marks everything on the current page as read.

News > Mark > Page as Read and Go to Next Page does what it sounds like. If you’re on the last page of a feed, it does a go-to-next-unread. You can cruise through all your news page-by-page this way.

Combined View: HTML differences

Bug-fix: toggling the HTML differences pref reloads the Combined View.

Acknowledgments

Added Acknowledgments command to the Help menu. It displays a window listing the open source and public domain software that NetNewsWire includes. It also lists or links-to the license for each. (These items were — and still are — also listed in the About box, but this window is here to show the licenses for the various components.)

Vertical tabs

Fixed a bug where closing a tab other than the selected tab could cause the tabs list to scroll. (It happened when the selected tab wasn’t visible in the list.)

Fixed a bug where hiding/showing the tabs via the Tab menu didn’t always update the display. (So it looked like it didn’t work, at first.)

Horizontal tabs

When horizontal tabs appear or disappear, and you’re using the traditional view, the location of the splitter (between titles and the description view) does not move. Feels more solid.

Unsubscribing via contextual menu

Added a new contextual menu command to the news items list — “Unsubscribe from ‘source name’” — which unsubscribes from the source for the selected item.

About window

When you open a link, it now opens in front. (Either in your browser or in a tab in NetNewsWire, depending on your prefs.)

There’s a little URL status display at the bottom, so you can see what the URL is when you hover over a link. (Previously it used to show the URL at the bottom of NetNewsWire’s main window, which was weird.)

2008

About window and license agreement both say copyright 2005-2008.

Headlines table drawing

Fixed a drawing bug where the wrong background color could appear, in special circumstances, between the rows of the headlines table.

Keystroke for Mail Link to This Page

Cmd-ctrl-L now invokes the Mail Link to this Page command when viewing a web page in a tab. Fixed a bug where this wasn’t working.

Searching and smart lists don’t use Spotlight

Searching and smart lists don’t use Spotlight anymore — they work the same way they worked in 2.x, which will fix some performance issues for some people.

Go menu

Added a Go menu, and moved Previous/Next Unread and Back/Forward commands to that menu. (They were in the News menu.) Same keyboard shortcuts work.

Hide Source Column

For Marlyse… you can now hide the Source column in the headlines table.

The Source column normally appears and disappears based on whether you have a group (or smart list, etc.) selected.

If you don’t care about the Source column, you can choose View > Columns > Source to turn it off. (This removes the checkmark next to the menu item.)

Description display bug

Fixed a bug that caused the “One line of code can make your site iPhone-friendly” item in http://feeds.macworld.com/macworld/iphone display without the style sheet.

Select multiple news items

You can select multiple news items now. Everything should work as you expect it to work.

If you select multiple news items, you can do an open-link on all of them at once — up to a limit of 20 items. The command is disabled if more than 20 items are selected. (The limit is for performance reasons.)

Toolbar Refresh All bug fix

After a feed-download session, the Refresh All icon wouldn’t be enabled until after you move the mouse or hit a key (or somehow cause the app to update). Fixed. (The toolbar items are validated after a download session ends.)

New toolbar icons

The new icons are designed for Leopard, but they should still look good on Tiger. (These aren’t resolution-independent yet — but we plan to do that.) The icons are by the ultra-talented Bobby Andersen.

Widescreen view

Fixed a bug where the width of the middle pane (the titles) would get larger on each subsequent restart — if you’re also using vertical tabs and vertical tabs are showing.

Send to Twitterrific 3.x

Fixed a bug where the Send to Twitterrific command didn’t appear with Twitterrific 3.x and greater.

New styles

Default (3.1) is a revision of the default style. nnw and nnw - gray both use a big grayscale version of the NetNewsWire icon. FactoryLegible, by Chris Messina, has the very cool feature that it resizes graphics to fit (when needed) if you have JavaScript for news items enabled.

App icon

It now includes 256 and 512 representations, since Leopard can use big damn icons.

Sites Drawer

Simplified look by removing default feed icons. The only icons now are for feeds with favicons. (And folders.)

Folder icons in the Sites Drawer are now Leopard-ish on Leopard.

The Open in Browser and Subscribe buttons work again.

Cleaned up the Comics and Macintosh folders. (Removed a bunch of dead feeds.)

Using a binary property list instead of XML, for a savings of about 419K. (Tip for anyone in a similar situation: you can use plutil in a shell script phase.)

Added Shawn Blanc. Deleted “New in 3.0” folder.

New toolbar commands

Refresh, Open Link, and Add to Clippings now appear in the toolbar.

Contextual menu bug fix

Fixed a bug where using the contextual menu command in the subscriptions list to refresh a folder that contains only sub-folders wouldn’t work.

RSS parser

This feed now works properly http://feeds.feedburner.com/CaliticsFeed. (Fixed a bug with some rare entities.)

The links in http://news.sbs.com.au/syndicate/feeds/worldnews.xml weren’t being parsed correctly, now they are.

Increased the limit on parsing a feed from 1000 to 10000 items.

First run

Fixed a bug where you might get two question windows on first run — sync-invitation and default-aggregator. Now you just get one (sync-invitation).

Bloglines syncing deprecated

If you don’t have any Bloglines-synced feeds, then the New Special Subscription > Bloglines… menu item no longer appears.

If you do have one or more Bloglines-synced feeds, then the menu item still appears.

This means that people who are already using Bloglines syncing can continue to use it, but people who aren’t using it can’t start using it.

As far as I can tell, nobody is actually using this feature — NetNewsWire users never mention it. And it’s no wonder — the API was too simple to work very well. (It didn’t cover things like syncing read/unread status.)

If this feature is removed entirely in some future release (not 3.1, but some later release), we’ll be sure to provide a way to migrate those feeds to non-synced or to some other form of syncing. (I’ve not made a decision on removing the feature — we might just leave it there for people who are already using it. On the other hand, it would be nice not to have to test and maintain that code. On the third hand, it isn’t that much code.)

Deprecated FTP syncing

FTP syncing is deprecated. It will be removed entirely in 4.0.

The FTP syncing option now appears only if:

1) You’re already using FTP syncing, or

2) You set a hidden pref to enable FTP syncing.

To set the hidden pref: quit NetNewsWire, then copy and paste the following into Terminal and hit return:

defaults write com.ranchero.NetNewsWire enableFTPSyncing 1

To turn off the hidden pref, repeat the above but with 0 instead of 1.

Why deprecate FTP syncing? It’s expensive to support and really hard to improve. With NewsGator syncing and Apple’s SyncServices, we have two syncing systems built by people who are experts at syncing. With FTP syncing, there is no syncing system—it means having to write one scratch.

Well, actually, we did write one from scratch, and the problems with it are too big to fix without rewriting it completely from scratch. Since NewsGator syncing and SyncServices already exist, spending time writing a syncing system from scratch is not worth the time.

Atom parser and relative URLs

Fixed a bug resolving relative URLs when 1) there is no xml:base URL and 2) <a:link href=”” rel=”self”> has an empty href. NetNewsWire now uses the URL where the feed was downloaded, since no other base URL was specified.

Atom parser

No longer mis-treating wfw:comments as the URL to view comments. (It’s the URL to post comments.)

Growl

Fixed a bug where canceling a download session (manually or by quitting) could result in a bunch of duplicate notifications.

Unread count offness

Fixed a bug with sub-sub-folders and the global unread count. (For instance, when doing a mark-all-as-read in a folder, the grandchildren feeds weren’t getting their unread counts updated, which led to hidden incorrect unread counts, which led to an incorrect global unread count.)

Post-to-weblog and renamed apps

Fixed a bug where post-to-weblog wouldn’t work if you renamed your weblog editor so that the name no longer matched the actual executable name. For instance, if you renamed “MarsEdit” on disk to “MarsEdit 2.0,” post-to-weblog would fail, but now it works.

Enclosures

Fixed a bug downloading enclosures in this feed http://public-xml.feedroom.com/public_rss/nytd_podcast_rss.xml?channel_id=a70bf18ea508268510db33cb15a2b03750645b3d.

Web-page preferences

If you use a custom style sheet for web pages, the preferences window now displays the name of that style sheet. (I myself use one, which just says “a {text-decoration:none}”.)

Toolbars: click-through disabled

Totally disabled click-through for the main window and prefs window toolbars.

Toolbar: Post to del.icio.us

Fixed a bug where this toolbar item would be enabled sometimes when it shouldn’t be.

HTML Archive

NetNewsWire can now store news items on disk as separate HTML files. The idea is to give people a way to archive and save stuff without having to keep it in NetNewsWire. (Since NetNewsWire performs best the less new items you have saved.)

See Preferences > General > Archiving. You can do an initial archive by clicking the Archive Now button. Open the archive folder by clicking Open Folder.

The archive is stored in a calendar format, to make it easy to prune old stuff manually. The relative path to a file looks something like this: 2007/07/12/feedidentifier/newsitemidentifier.html

The files are HTML files with microformat-like info embedded. You can open them in any browser, write scripts that read them, etc. No lock-in.

There’s a sample Ruby script for parsing an archive file and getting out information: http://nnwbeta.com/downloads/parseArchiveFile.rb.zip The script illustrates the right way to pull data — I won’t break this script.

Also: there’s a special CSS file for the archive files: HTMLArchive.css in your app support folder. You can edit it if you want: NetNewsWire won’t over-write it if it’s there.

Important note: you can make NetNewsWire perform better by lowering your “keep news items” setting to something like 7 days. The fewer news items in NetNewsWire’s storage, the better it performs. This feature is designed to give you a way to keep an archive without having it hurt NetNewsWire’s performance.

(Note to microformat fans: I was going to use hAtom, but it’s not designed for archiving news items.)

HTML Archive searching

The HTML Archive is now searchable. From the triangle menu in the Search field in the toolbar, choose “HTML Archive.” Type what you want to search for, then hit return. (Yes, you have to hit enter or return, just like the web searches available from the search field. This is more like a web search — it’s searching the corner of the web that’s been copied to your local hard drive. It’s a kind-of Personal Google on Your Desktop.)

A web page will appear that lists the matches. It will open in NetNewsWire or in your external browser, depending on your settings.

When you click on a link, it opens that archive page.

This all about open standards — the archive is HTML. The technology you use to view the archive is a web browser. Any web browser.

Searching is done via Spotlight. Which means that Spotlight needs to be able to index ~/Library/Application Support/NetNewsWire/HTMLArchive/

There’s a CSS file for the search results — you can edit it if you want. It’s in NetNewsWire’s app support folder: it’s called HTMLArchiveSearchResults.css.

Per-feed HTML Archive setting

In the Info window is a new HTML Archive section. You can exclude feeds from HTML archiving. Settings for groups are inherited by feeds inside the group.

No HTML archiving occurs at all if the global setting is off (see Preferences window > General > Archiving). And, if the global setting is off, the per-feed setting doesn’t appear in the Info window.

Headlines table (traditional/widescreen)

Brought back the horizontal stripes. I got tired of people asking for it. ;) (I find the stripes a little busy, but that’s just me. What are you gonna do.)

Removed the same-day/same-source highlighting. I thought it was a cool feature, but I’ve never heard from anybody that they like it — and it gets reported as a bug. So it’s gone.

Keyboard

When the titles table in the traditional or widescreen view has focus, the page-up and page-down keys scroll the description view. (See Mail for prior art.)

Dock menu open links in NetNewsWire option

Fixed a bug where the dock menu’s open links in NetNewsWire option wouldn’t work if the global setting was to open links in your default browser.

Subscribing to URLs with illegal characters

When subscribing to a URL with an illegal character, NetNewsWire will encode the characters instead of reporting an error.

Folders and marking as unread

Fixed a bug where marking items as unread in a feed wouldn’t get picked up by the folder the feed is inside. (Okay, really is the same as the unread count lag fix, but it’s such a good bug fix it counts double.)

Removed Index News Items command

Removed the Index News Items command from the NetNewsWire menu — because it isn’t needed anymore, now that searching and smart lists don’t use Spotlight anymore

NewsGator syncing: efficiency and performance

NewsGator syncing is way more efficient and faster.

NetNewsWire ensures that a location exists only as needed — rather than once for every refresh session. This removes one blocking call at the start of (almost) every refresh session.

Further reduced the amount of work at the beginning of a refresh session by calling GetUpdates instead of GetSubscriptionsList. GetUpdates is a much smaller and faster call.

Gzip compression is used for most of the NewsGator server responses — including the feeds themselves and post-state data. (This cuts way down on bandwidth use.)

All clippings folders were downloaded on each refresh session — now they’re downloaded only if there have been changes.

Clippings folders were processed unecessarily (actually moved out of the tree structure, then returned at the exact same place) — fixed.

No longer forcing a download of all feeds at startup — letting the system tell us which feeds need downloading and which don’t. So the first refresh should not be such a big job anymore.

Cut the number of authenticated requests in (almost) half — for each call, there were really two server calls: one that returned a 401, then a second call with authentication info. I figured out how to re-use digest authentication objects so that, most of the time, a single trip to the server is all that’s needed. (This is easy with basic, but we use digest when talking to NewsGator’s servers, since it’s stronger.) (Most of the calls are authenticated calls, so this applies to just about every communication with our sync engine.)

NewsGator syncing: attention/relevance

In addition to actions such as reading, flagging, and clipping an item, actions such as emailing, posting to weblog, and similar are sent to the server. The idea is to use this to calculate relevance. (FYI: here’s the privacy policy: http://www.newsgator.com/privacy.aspx. The upshot is that this would be shared only as aggregated, anonymous data.)

You can tell NetNewsWire not to send this extra data: on the syncing prefs pane, uncheck the box next to “Include attention data when syncing.”

Subscribing bug fix

When subscribing to a feed, and using NewsGator syncing, NetNewsWire would do all the sync calls (GetUpdates, clippings, etc.) while reading the feed. This was unneccesary, and now it no longer does it. (This should have the side effect of fixing, at least partly, some of the weird appear/disappear/move-location bugs you sometimes see when subscribing.)

New first-run window

Instead of a web page, the first-run window is a Cocoa UI, an assistant, for setting up an account, etc.

NewsGator Syncing and account creation

There is now an assistant for creating a NewsGator account — this way you don’t go to the website, there’s a real Cocoa UI. (This assistant is also the new first-run window, with some slight changes to make it also function for setting up syncing at a time other than first-run.)

NewsGator syncing: disappearing feeds

Mostly fixed a bug where feeds added during a refresh process could disappear (and usually come back, but not always). (Actually, it’s 90% fixed. It’s a timing bug. It still needs to be fixed all the way.)

NewsGator syncing: UI

The status bar, below the subscriptions, has been revised. During syncing, it says what it’s doing — as in “Syncing read status…” or “Looking for updates…” (The messages in the Activity Window are more verbose. There’s not much room right below the subscriptions.)

The important thing is that the “6 of 113…” message really means it has made 6 of 113 http requests — minus the NG syncing http requests. This will end the confusion some people have over that number: it won’t tend to be more than your number of feeds. (Except in the case of redirects.)

NewsGator syncing: Sync News Items Status command

At the bottom of the File menu is a new Sync News Items Status command. It tells the server about all your read and flagged items.

Normally, NetNewsWire syncs news items status automatically. This command is for when you think news items status is out-of-sync. It’s a safety net.

Note, however, that unread counts may not always exactly match in different places. You might, for instance, have a feed set not to refresh in NetNewsWire, yet it refreshes on the server (since feeds are shared), and thus you’ll have unread items on the server but not in NetNewsWire.

NewsGator syncing: locations and accented characters

Fixed a case where accented characters in a location name could mess things up.

NewsGator syncing: small memory leak

A super-small memory leak with creating locations was fixed. There’s no way you’d notice any difference with this fix, but I mention it for the sake of completeness.

NewsGator syncing: fixed hanging bug

Fixed a condition where popping up the list of locations in the syncing preferences pane could hang NetNewsWire.

NewsGator Syncing: initial-sync/starting-over-sync

After doing an initial sync or a starting-over sync, NetNewsWire does a big sync of news items status in the background. (It does the same thing as the new Sync News Items Status command, only without showing a window.)

The idea is to make the unread counts more closely match between the local client and online, and more closely match what is expected.

Note, however, that unread counts may sometimes differ, and that’s to be expected, especially right at first. There are a number of different possible reasons for this.

NewsGator syncing: news items status and very fast-moving feeds

Fixed a bug syncing news items status with feeds that update very frequently. This is one of those bug fixes where things will work better going forward — it doesn’t affect news items that already exist. So you won’t necessarily notice any effect at first.

More NewsGator syncing error reporting

More NewsGator syncing errors are reported in the Errors window.

NewsGator syncing and item status

Fixed a bug some people were getting with syncing news items status (read/unread, flagged) via NewsGator.

NewsGator syncing unflagged items

Fixed a bug syncing items that were flagged and were then unflagged.

Shutdown sync timeout

Increased the timeout for the NewsGator sync at shutdown to 60 seconds. It was 30 seconds, and apparently that didn’t do the trick for everybody — so sometimes their news item status wouldn’t get sent to the server at shutdown. 60 seconds ought to do the trick.

Hidden pref for shutdown sync timeout

You can change the shutdown NewsGator sync timeout from the new default of 60 seconds to whatever. For example, to set it to 120 seconds, copy and paste the following into Terminal and hit return:

defaults write com.ranchero.netnewswire shutdownTimeoutSeconds 120

News item status syncing at shutdown

Fixed a bug that would prevent news item status syncing at shutdown from working for some NetNewsWire users.

Periodic news item status syncing

News item status is now synced periodically, automatically, every five minutes, in a background thread.

News item status syncing performance

Fixed a bug that caused news item status syncing to work too hard (to transmit some local changes more than once).

NewsGator syncing: News Items status sync fix

News items status syncing is more reliable — it better remembers state changes and re-tries them later. (If your network goes down, for instance.)

NewsGator syncing: Feeds that re-use guids

Fixed a bug adding (or doing a first sync) with evil feeds that re-use guids. The bug was that some items would end up left as read that should have been marked unread. For example, adding this feed http://developer.apple.com/rss/adcheadlines.rss now works properly.

NewsGator syncing: merge subscriptions change

Now using a new asynchronous version of the NewsGator merge-subscriptions call. You shouldn’t notice anything different, but I mention it for completeness’ sake.

NewsGator syncing: downloading subscriptions less often

Now checking the return from GetUpdatesv2 to see if we need to download the subscriptions list or not — most of the time, we shouldn’t have to, which will further save bandwidth/CPU/etc.

NewsGator syncing: first-sync/starting-over-sync unread counts

Unread counts match better now for first-sync and starting-over syncs. (They won’t always match perfectly — you might, for instance, have some items in a feed that have fallen off the online version, or that the online version hasn’t picked up yet. It’s on the to-do list to document the exceptions, for when folks ask.)

NewsGator syncing: odd usernames and passwords

Fixed a bug where login could fail if certain characters were in the username or password.

Syncing and errors

Stopped reporting location-exists errors in the Errors window — since they’re not really errors and are, in fact, expected.

Initial NewsGator Sync handling

If you turn on syncing, but don’t do an initial sync, then when your feeds go to refresh — you now get prompted to do an initial sync. Previously it would just report it as an error and tell you to open preferences and click Sync Now. This way is better — less clicking, less stuff to do.

First sync choice window

The first sync choice window — that lets you choose between merge, replace-server, replace-local — now has a NewsGator icon on it. It’s awesome because it’s orange and reminds me of Apple’s syncing icon.

Syncing prefs pane

You can tell NetNewsWire not to send attention data (post-to-weblogs, send-via-emails, etc.) to NewsGator.

You don’t set your username/password via the prefs pane at all anymore — you click the button which opens the create-account/login-to-account assistant.

NewsGator Connection Tester

See Window > Connection Tester.

It tests your connection to NewsGator’s servers. It’s a troubleshooting tool, for when people have trouble connecting or syncing.

Dock badge and Leopard

Now using standard dock badge — like Apple’s apps — for the unread count in the dock. This means you can’t change the size or colors on Leopard.

Apple has provided an API for doing a standard dock badge. Before Leopard, this didn’t exist — but, now that it does, I prefer going with the standard.

Startup performance

For folks with lots of unread items, startup performance should get better over time. This is due to a small change in how news items are stored on disk. It won’t improve performance the first time you launch NetNewsWire, but on subsequent launches it should get better and better.

Opening URLs with ~

When opening a URL in an external browser, NetNewsWire no longer encodes the ~ character. (Since ~ is legal these days.)

Validate this Feed fix

NetNewsWire escapes characters properly now when sending a link to feedvalidator.org — which fixes a bug validating feeds with a ? in the feed URL.

Scroll to top on changing feeds

Fixed a long-time bug where the scroll bar in the traditional/widescreen views wouldn’t go back to the top when you changed the selected feed.

.Mac performance bug

A major performance bug with .Mac syncing in 3.0 was fixed.

.Mac syncing news items status

Fixed a bug where news item status for future items wouldn’t sync. “Future items” means items downloaded on one machine, but not yet downloaded on the other. These items would usually get marked as unread once downloaded, even if marked as read on another machine.

(The trick is to save the status in the status database and look it up when the item is downloaded.)

Note: switching between .Mac syncing and NewsGator syncing doesn’t work too well, but that’s a lower priority, since most people probably pick one and stick to it (for obvious reasons).

Edit smart list name in Info window

Fixed a bug editing the name of a smart list using the Info window — you couldn’t enter spaces. Now you can.

Toolbar search field

It gets a focus ring now when it has focus.

Clippings sort by source

Sorting a clippings folder by source was inaccurate — now fixed.

Embedded browser and file uploads

When you click a button for a file upload, instead of doing nothing, NetNewsWire now provides a standard choose-file dialog to choose the file to upload.

Nonexistent-font crash fix

Fixed a bug where, if a font preference specified a font that no longer exists on your system, NetNewsWire would start throwing exceptions and behaving badly.

Flagged headlines feed

It updates its items list and unread count more quickly at startup — you don’t have to select it first, or select a feed with flagged items.

It also updates its unread count right away when you mark a flagged item in another feed as read or unread.

Performance: beachballing and summaries

Fixed a cause of beachballing that could happen for people who show summaries in the headlines table.

Credits, web page error page

Got an updated credits page (which appears in the About box) and updated web-page error page from Brian Warren http://begoodnotbad.com/. The error page now displays a horizontal scrollbar when the Fancy Debug Info(tm) won’t fit.

NGES (enterprise) bug fixes

Fixed a bug where normal folders could appear as clippings folders.

Fixed a bug where items clipped in the online interface wouldn’t show up in NetNewsWire. Now they do.

Fixed a bug where the Start Over sync button wasn’t available when it should be.

Fixed a bug handling NGES dates like Fri, 03 Aug 2007 22:00:00.xxx GMT — now working properly. (NetNewsWire wasn’t expecting the .xxx part.)

Fixed an authentication bug with non-Active-Directory NewsGator Enterprise server.

Fixed a bug logging into NewsGator Enterprise Server systems when running NetNewsWire on Leopard.

Help menu

You can now get to the public mailing list from the Help menu.

Accented characters

Fixed a bug with entering accented characters with some combinations of system language and keyboard layout.

Downloads window, not showing

If you don’t want the Downloads window to appear automatically when a download begins, go to Preferences > Downloading > Downloads Folder. Uncheck the box next to “Open Downloads window when a download begins.”

Dumb servers with space before BOM

Worked around a bug some dumb server had — it put a space before the BOM which made the feed impossible to parse.

Subscriptions List

On Leopard, uses standard blue (active) and gray (inactive) colors.

On Leopard, uses Leopard folder icon.

Fixed a bug where doing a right arrow in the subscriptions wouldn’t take you to the first news item. Now it does.

Cmd-rightArrow now works to expand a folder on Leopard.

Horizontal browser tabs and titles

If you use horizontal browser tabs, sometimes the title of a tab wouldn’t update very quickly once a new page loads. Now it updates more quickly. (In other words, you don’t have to mouseover the tab to get the title to update.)

Subscriptions list, second click, and Leopard

Fixed an on-Leopard-only bug where a second click (not a double-click, but a later second click) on a feed would open its home page in browser or new tab.

Fonts prefs

Moved fonts prefs for News Items and Web Pages to the Fonts prefs panel. (They were on Browsing, but people often didn’t find them there.)

Method collision crash fix

Worked around a method name collision with a particular plugin — it caused some crashes, but I changed my method name. (And I contacted the plugin author, who I expect will change his method name, so that anyone who updates either one of the two pieces of software will get the crash fix.)

Traditional/widescreen views splitview

The splitter for the traditional and widescreen views now doesn’t move when you resize the window — unless you’re making the window very small. Works like Mail.

In widescreen view, when the vertical tabs bar is shown or hidden, the description view changes width. The titles pane stays the same width.

View > Subscriptions > Show Icons

It works again to toggle the display of icons in the subscriptions list. (You can have plain text, no icons.)

Default sort order for new feeds

The default sort order for new feeds is now Date, reverse-chronological. Like a weblog, in other words.

Previously, the default was by arrival order, reverse-chronological — but this meant we were sorting on a column that wasn’t actually visible, which is weird. And it got weirder when going from non-synced to synced — you might have older items arriving in NetNewsWire sooner than newer items, since NGOnline might have some older items, and the sorting looked buggy, even when it wasn’t.

Downloads may add suffix

When downloading a file to disk, a file may get a suffix added if the system (NSURL loading system) thinks it needs one. For instance, if you download SomePDFFile, NetNewsWire may change the name to SomePDFFile.pdf, so the file can be double-clicked.

User Agent

Now links to http://www.newsgator.com/Individuals/NetNewsWire/ instead of http://ranchero.com/netnewswire/. So that may mess with market share, if everybody is looking for the old string. ;)

Increased WebKit cache

Increased the on-disk WebKit cache from 10 MB to 20 MB. (This should mean that hitting back button results in a refresh less often.)

Subscriptions list crasher

Fixed a crash that could happen when doing an animated sort of the subscriptions list.

Save-to-disk performance

The thread that saves news items and status to disk once a minute now does less work — it was rebuilding the list of data items for groups, which wasn’t necessary and is expensive.

Searching, smart list crashes

Fixed a crashing bug in searching and smart lists.

Daring Tooltip

Dealt with that weird Leopard tooltip feature that made the giant yellow screen of death with that super-long-titled post on Daring Fireball.

Date bug fix

Now handles dates of the form “10 Jun 2007 21:44 PDT” as seen in this feed: http://slesinsky.org/brian/index.rss

Fixed source of weird bugs

Sometimes inexplicable things occur due to uncaught exceptions — I caught one I didn’t know about when initing NSXMLDocuments and using Tidy. This exception may have been responsible for slow dock icon updating for some people, among possibly other weird UI things.

Pre-flighting check for feed links

When checking a web page for links to feeds, NetNewsWire first checks to see if the page includes any text that would likely be a feed link. This saves performance.

NetNewsWire Use Report enhancement

It now includes stats on NetNewsWire’s WebKit cache.

No more Spotlight indexing

The Spotlight importer, NNWImporter, is gone. (Instead, see the HTML Archive feature.)

Memory

Fixed some small memory leaks.

NSGradient

Started the switch to using NSGradient on Leopard. The status bar at the bottom of the main window uses NSGradient. It should look the same as in the previous build.

Entities: hellip, hearts, 160

Added hellip and hearts entities to the entity conversion table. Fixed the entry for 160, which was empty.

Switched to .xib format for nibs

It’s unlikely this will be a source of new bugs. But it could be.

Building on Leopard

The target is still 10.4.0 and greater — but it’s now being built on Leopard.

Preferences > Fonts

Made the font values display thingy slightly more Leopard-y.

Hang fixes

Fixed a hang that could happen while evaluating smart lists at the end of a download session.

© Copyright 2005-2008 NewsGator Technologies, Inc.


NetNewsWire: More news, less junk. Faster