why don't we move the other way and infuse our slick native desktop
applications with offline capabilities and access to more hardware
power
Some of us have.
So there are plenty of ways to accomplish what you're talking about. But there are a couple popular options in particular which were designed specifically to allow you to create applications for both the desktop and the web (and web-enable the desktop version):
1) Adobe Air
One of the more well known and successful Adobe Air applications around is Balsamiq Mockups. By using Adobe, Balsamiq was able to create a Flash application for web use and a desktop version in Adobe Air which I believe shares the same codebase (with a few extra features).
2) Microsoft Silverlight
Silverlight has an edge in this regard. I built Regex Hero in Silverlight. And where the Adobe path requires two separate components for web and desktop (Flash and Air), the 6MB Silverlight plug-in enables both web and desktop (or out-of-browser) applications by itself. Silverlight also has an easy update mechanism. You simply call CheckAndDownloadUpdateAsync()
and the application update downloads silenty, and is then installed instantly when the user relaunches the application. It's your choice how you want to present that to the user, but my decision was to make it happen silently similar to the update mechanism in Google Chrome. This way you're not interrupting the user with update notifications.
Still, there's a time to consider one of the above solutions, and a time to build an app with HTML/Javascript. Here are a couple issues to take into account...
Responsiveness
The speed of HTML rendering and Javascript runtime performance has improved substantially over the past few years. Then IE9 utilizes the GPU for rendering. So there's been some big performance wins lately and there's a stronger reason to build a rich web-based application on these technologies than ever.
However, the implementation details across browsers is still embarrassingly varied. It's still difficult to create a processor-intensive application that runs well on all popular browsers. In addition to that, there's one thing that has plagued both JavaScript and Actionscript (in Flash) for years. They can't do multi-threading. Now, multi-threading isn't always necessary to build a rich & responsive application. It's possible to pull off asynchronous operations without multi-threading. But at times multi-threading is exactly what you need to achieve the speed you're looking for, leverage multi-core CPU's, etc, etc. Silverlight has multi-threading, and it's another big win for Silverlight.
Compatibility and Adoption Rates
So this is where the decision becomes complicated. Silverlight only runs on Windows and Mac. Adobe Flash/Air will run on Windows, Mac, and Linux. And then Flash is more widely adopted than Silverlight, but Silverlight is more widely adopted than Adobe Air.
And in a sense, the latest HTML5 technologies are still behind Adobe and Microsoft in terms of adoption rates. But surely that will eventually change. The browsers are still implementing features in the HTML5/CSS3 spec. But perhaps the biggest advantage with HTML5 is future compatibility. In addition to PC, Mac, and Linux, modern tablets and even phones are being sold with modern browsers which support HTML5 in some capacity.
You can follow adoption rates at http://riastats.com/ but note that the HTML5 chart only takes into account Video and Canvas support.