Monday, July 20, 2009

Arora 0.8.0!

Source, Windows and OS X and binary packages are available on

First off a big thanks to everyone who contributed to this release:

Jakub Wieczorek Jakub Wieczorek

Benjamin C Meyer Benjamin C Meyer

Benjamin K. Stuhl Benjamin K. Stuhl

axasia axasia

Zsombor Gegesy Zsombor Gegesy

Tom Gundersen Tom Gundersen

jreznik jreznik

Jonas Gehring Jonas Gehring

Aurélien Gâteau Aurélien Gâteau

Shortly before 0.8.0 we had our 1000'th commit to Arora. A big thanks to everyone who helped make that possible.

Between 0.7.1 and today Qt 4.5.2 was release. There was a number of fixes in this release that effect Arora. For the complete list see the Qt 4.5.2 changelog Some highlights include:
  • A big QtWebKit Memory leak was fixed
  • Several QtWebKit security bugs were fixed
  • Several QtWebKit segfaults were fixed
  • Fixed a leak of file descriptors in QTemporaryFile::rename, introduced in 4.5.1. This was the bug that forced Arora to always turn off the disk cache when using Qt 4.5.1. With disk cache as you would expect Arora can perform much faster.
  • QNetworkCookie, Fixed parsing of multiple cookies separated by a newline (also introduced in 4.5.1). This is what broke many site logins such as facebook.

As you can see it is highly advisable to upgrade to Qt 4.5.2 on Linux if your distribution hasn't already. Both the Windows and OS X binary packages include Qt 4.5.2.

Lots of improvements and features were added in 0.8.0. We have been blogging about a number of the features, but here are two more:

In the current version of the Inspector you can now see the headers for a page. Because of this the Network monitor which was added just a little bit ago has been removed.

For those who still want to use the network monitor you can easily do it with git and revert 12ebaf4f60f804c0200a61e8fdbc62c935588184.

Another Qt 4.6 feature is the ability to highlight searches:

The full changelog:

- When the ctrl key is pressed show keyboard accelerators on the screen. [Qt 4.6 only].
- Location bar: implement full text search and more accurate sorting.
- Add a simple start page with a search box pointing at the active search engine.
- Allow to create new open search engines from any input forms displayed in websites [Qt 4.6 only].
- Add a menu to set the default text encoding for all rendering [Qt 4.6 only].
- Implement directory listing when accessing file:/// URLs that point to directories.
- When a POST request is about to be resent, warn user about that fact to make sure that the operation is intended.
- Add a checkable push button to the search bar that allows to highlight a specific string in a website [Qt 4.6 only].
- Add a setting that specifies if the url supplied by the user should be forwarded to the default search engine if it isn't valid.

- Show a more verbose message when the htmlToXBel tool is not installed.
- Show the complete tab title as tool tip to improve GUI usability for long website titles.
- Download manager: Create the download directory as needed.
- Location bar: If escape is pressed on location bar revert to the original URL, this emulates the firefox behaviour.
- Add Google "I'm Feeling Lucky" search engine to the default set.
- Drag & Drop: Add the ability to drop an url on the tab bar which will open it in a new tab.
- Drag & Drop: Allow dropping URLs on the location bar.
- When creating new windows, use the startup setting to decide if the homepage should be loaded.
- Remove the network monitor tool as the current Inspector now lets you see request headers and response headers.

- Fix several memory leaks: set the Qt::WA_DeleteOnClose flag on dialogs that are executed asynchronously.
- Download manager: Fix displaying file size when downloading huge files.
- Download manager: Give correct name to downloaded files with no suffix.
- Location bar: Fix background color when using Oxygen style.
- Bookmarks manager: Don't allow to edit the url in any nodes but normal bookmarks.
- Private browsing now disables the disk cache.

Behind the scenes
- Added custom network scheme handlers, i.e. a single one for listing local directories.
- Add a setting so the user can swap the location of the new and close tab buttons.
- Add the ability for a user to specify the userAgent through QSettings.
- Split up the bookmarks classes into separate files.
- Remake the bookmarks toolbar.
- Clean up the AddBookmarkDialog class.
- OpenSearch: Implement the Referrer extension.
- Implement the WebPage::linkedResources() method using the DOM API.
- Tweak the certToFormattedString() function.
- OpenSearch: localization improvements.

Build system
- Include an additional XML file in the installation, which will make Arora appear in Gnome Control Center on the list of available web browsers that can be set as default.
- Add man pages for the tools.
- webkit.pri now supports building QtWebKit as a framework on mac.

Saturday, July 18, 2009

Directory Listing

For all network related tasks Arora uses QNetworkAccessManager Unfortunately it currently does not support a way to list directories out of the box in Qt 4.5. Because QNetworkAccessManager is used in other things besides browsers it isn't sure the proper way to return a directory listing. In our case we want to turn directory listings into a webpage that users can click on. We just recently merged a branch into Arora that gives us a way to overload the file scheme and generate a web page for local file browsing. Currently the page is very simple so if you know some html and javascript and would like to make it a bit fancier (such as adding a checkbox to show/hide hidden files) grab the current git, submit a new html file to the arora-dev mailinglist and we will merge it in.

Also this is the last call for translations before we release 0.8.0. If you would like to contribute a new translation or update an old one, do so asap to make the release.

Wednesday, July 8, 2009

Location Bar in 0.8

Location bar is this part of Arora's GUI that has received the most care last weeks. Apart from the bug fixes that Ben blogged about yesterday and the location bar fallback feature that was mentioned two days ago, it will now have a way better autocompleter. Much thanks to Benjamin K. Stuhl, who is the author of completion improvements.

In previous releases the completer's matching algorithm was trivial and poor at once. First off, the old method was only matching URLs that were starting with what user has typed in the location bar. The completion results were sorted by recency, which wasn't bad but not sufficient.

Now it finally gives the user much more accurate completion results. The completer performs a full-text search of both URLs and page titles and sorts the results by a specific metric which is a combination of frequency and recency of visiting specific URLs. This way more interesting hits are at the top of the list. It also prioritizes full-word matches over random substrings so that e.g. "dot" matches "" better than "".

Apart from the internal changes, the location bar autocompleter looks better now. It displays both URLs and titles of matched history entries in two columns.

Tuesday, July 7, 2009

Some Linux Desktop Improvements

Recently a handful of fixes went in that help improve Arora across the Linux desktop. Highlighting a few of them:

LocationBar in KDE's Oxygen Style

In the current version when using Arora with Oxygen the background was painted outside of the line edit. Turns out this was a bug in Arora's LineEdit. After fixing that we look much better.

Default Browser in Gnome

Recently we got a patch that adds the xml file needed so show up in the Gnome preferred application dialog.

Man pages

Arora ships with some utility tools. I finally sat down and wrote up some man pages to ship with them when they are installed, resolving those Debian package warnings :).

Monday, July 6, 2009

Searching becomes even easier!

Since 0.7 Arora has supported the OpenSearch format as description format for search engines, that can be used in the toolbar search. This gave you the ability to add new search engines to the default set as long as someone has created an XML file describing the search engine you would like to have and has put it up somewhere. But what if this isn't the case? What if you realize that there is no description file for your favourite search engine out there? 0.8 will address this problem. The bad news is that the feature described below can be used only when compiling Arora against Qt 4.6 or WebKit trunk.

Now you will be able to create a new search engine from a form that appears on a website. When you right-click on the input field, you'll notice a new option in the context menu:

Having clicked on the option, you'll be asked to choose a name for your new engine. And that's all. Now the new search engine will be available in the menu in the toolbar search:

There are two circumstances under which the above procedure will most likely fail:
- The search engine uses POST method - unfortunately search engines using POST aren't supported in Arora yet.
- The form is handled by some other JavaScript code before it is actually sent to the server - here the result is unexpected.

Another search-related feature that will be part of 0.8 is location bar fallback. If you type in a plain text in the location bar, it will be searched using the active search engine. It is configurable and disabled by default.

Sunday, July 5, 2009

New Start Page

After several Qt 4.6 features it is time to add a feature that everyone can enjoy. This weekend we merged in a new simple start page that Arora will use as the default home page starting in 0.8.0. A big thanks goes to Fernando Lemos who created it. The page is integrated with the search box using QtWebKit's Javascript bridge. This means that whatever you have currently selected in the search box will be used in the start page, i.e. Google is not hardcoded.

Please report any usability/design related suggestions.

Saturday, July 4, 2009

Text Encoding

One missing feature that QtWebKit has had (and Arora) has been the ability to set the text encoding. This feature ended up being relatively simple path to QtWebKit and has been added to QWebSettings. This API will be part of Qt 4.6 and for those running Arora against QtWebkit trunk or Qt-git you will now see a simple text-encoding menu.

Friday, July 3, 2009

Access Keys

Over on (and on some KDE mailing lists) there is a bunch of discussion about web browsers and KDE. A common theme was that rather then talking about KHTML v.s. Webkit it you should just get out there and code. In that spirit I finished off my AccessKey branch and merged it in tonight. When you press the ctrl key little semi transparent boxes will appear all over the screen highlighting links. If you type the letter in the box that link will be followed. Using this it is much easier to browse without a mouse, not to mention faster. This was a feature that I really enjoyed using in Konqueror and missed.

Unfortunately it uses the new QtWebKit dom API (which will be in Qt 4.6) so it is only enabled if you are using the Qt master git branch or linking to QtWebKit Trunk.