<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>AppJet ChangeLog</title><link>http://changelog.appjet.com/atom</link><language>en</language><lastBuildDate>Mon, 22 Sep 2008 09:42:04 -0500</lastBuildDate><description></description><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/AppjetChangelog" type="application/rss+xml" /><item><title>Change on September 22, 2008 at 7:42:04 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/399851254/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Mon, 22 Sep 2008 09:42:04 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-Ly6j6D3po</guid><description>&lt;h3&gt;App Hosting&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
 &lt;li&gt;The per-app storage limit has been raised to 50MB.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/399851254" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-Ly6j6D3po</feedburner:origLink></item><item><title>Change on September 10, 2008 at 12:48:47 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/388524748/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Wed, 10 Sep 2008 02:48:47 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-Lw0cHIDx0</guid><description>&lt;h3&gt;App Hosting&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
 &lt;li&gt;&lt;a href="http://developer.mozilla.org/en/New_in_JavaScript_1.7"&gt;JavaScript 1.7&lt;/a&gt; support (server-side).&lt;/li&gt;&#xD;
 &lt;li&gt;Error pages are no longer cached for users behind ISPs with caching proxy servers.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Storage&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Fixed bug where removing a property of a StorableObject wouldn't remove it from iteration during the same request.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;IDE/Editor&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Faster document highlighting through data structure efficiency.&lt;/li&gt;&#xD;
&lt;li&gt;Better handling of pasted HTML from web pages.&lt;/li&gt;&#xD;
&lt;li&gt;Safari: fixed warning in console.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Email API&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Emails sent using sendEmail now pass the callback verification test that some SMTP servers do.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Beginner's Guide&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Fixed incompatilibity between embedded IDE and some proxy servers.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;appjet.jar&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Server always treats source files as UTF-8.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/388524748" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-Lw0cHIDx0</feedburner:origLink></item><item><title>Change on September 2, 2008 at 12:23:44 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/388524749/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Tue, 02 Sep 2008 02:23:44 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LvN4ZrjRN</guid><description>&lt;h3&gt;appjet.jar&lt;/h3&gt;&#xD;
&lt;ul&gt;&lt;li&gt;We have released &lt;a href="http://appjet.com/download"&gt;appjet.jar&lt;/a&gt;, everything you need to host AppJet apps yourself.  (&lt;a href="http://forum.appjet.com/viewtopic.php?pid=2497"&gt;What do you think?&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/388524749" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LvN4ZrjRN</feedburner:origLink></item><item><title>Change on August 29, 2008 at 2:33:38 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/388524750/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Fri, 29 Aug 2008 04:33:38 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-Lv0gl2gcf</guid><description>&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;b&gt;Easy-to-follow imports:&lt;/b&gt; import statements in the view source page are automatically converted to links to that library's documentation.  See &lt;a href="http://forum.appjet.com/viewtopic.php?id=469"&gt;this forum post&lt;/a&gt;.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;b&gt;Referrer stats:&lt;/b&gt; The app overview page now shows the top URLs that refer traffic to the app.  &lt;a href="http://appjet.com/app/842696965/overview"&gt;Example&lt;/a&gt;.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/388524750" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-Lv0gl2gcf</feedburner:origLink></item><item><title>Change on August 24, 2008 at 12:35:57 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/373276829/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Sun, 24 Aug 2008 02:35:57 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LswX0UThH</guid><description>&lt;h3&gt;Code Editor&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;p&gt;Meta-delete: Deleting backwards one word (e.g. option-delete on the Mac) is now handled specially to work consistently on all platforms.  The default behavior was often not appropriate for code (e.g. deleting backwards to a space character).&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;p&gt;Various IE bugs fixed, most notably pasting plaintext containing blank lines.&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;IDE&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;IE6: Several quirks and cosmetic glitches were addressed while launching the Beginner's Guide.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/373276829" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LswX0UThH</feedburner:origLink></item><item><title>Change on August 16, 2008 at 5:28:09 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/366890978/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Sat, 16 Aug 2008 19:28:09 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LnHAkotzQ</guid><description>&lt;h3&gt;Documentation:&lt;/h3&gt;&#xD;
&lt;ul&gt;&lt;li&gt;We have started a &lt;a href="http://appjet.com/docs/faq"&gt;FAQ&lt;/a&gt;.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/366890978" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LnHAkotzQ</feedburner:origLink></item><item><title>Change on August 15, 2008 at 6:13:54 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/366128245/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Fri, 15 Aug 2008 20:13:54 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-Ljpz4kxlu</guid><description>&lt;h3&gt;Absolute Beginner's Guide to Programming on the Web:&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
 &lt;li&gt;It's now &lt;a href="http://appjet.com/ltp"&gt;open to the public&lt;/a&gt;!&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;appjet.com:&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
 &lt;li&gt;New &lt;a href="http://appjet.com/docs/"&gt;docs page&lt;/a&gt; with simpler navigation.&lt;/li&gt;&#xD;
 &lt;li&gt;Complete redesign of the &lt;a href="http://appjet.com/"&gt;home page&lt;/a&gt;.&lt;/li&gt;&#xD;
 &lt;li&gt;New reference documentation for &lt;a href="http://appjet.com/docs/librefbrowser?page=storage"&gt;storage API&lt;/a&gt;, with more examples.&lt;/li&gt;&#xD;
 &lt;li&gt;The &lt;a href="http://appjet.com/docs/librefbrowser"&gt;Library Reference&lt;/a&gt; now highlights example code&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;IDE:&lt;/h3&gt;&#xD;
 &lt;ul&gt;&#xD;
 &lt;li&gt;Improved error messages for some common cases such as missing parenthesis, quote, etc.  (More improvements to come).&lt;/li&gt;&#xD;
 &lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Hosting:&lt;/h3&gt;&#xD;
 &lt;ul&gt;&#xD;
 &lt;li&gt;Many storage system optimizations.  In particular, it is now dramatically faster to perform lots of successive writes of small amounts of data.&lt;/li&gt;&#xD;
 &lt;li&gt;Requests to www.&lt;em&gt;app-name&lt;/em&gt;.appjet.net now redirect to app-name.appjet.net.&lt;/li&gt;&#xD;
 &lt;/ul&gt;&#xD;
 &#xD;
&lt;h3&gt;Misc:&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Fixed bug in sign-up form where it was improperly caching invalid usernames.&lt;/li&gt;&#xD;
&lt;li&gt;Cursor is now a "text insertion icon" always in code editor.&lt;/li&gt;&#xD;
&lt;li&gt;Post/reply links now appear in the forum when you're not signed in, and redirect to sign-in page.&lt;/li&gt;&#xD;
&lt;li&gt;The mini-ide in the absolute beginner's guide now has a "clear storage" button when developing database-backed apps.&lt;/li&gt;&#xD;
&lt;li&gt;Fixed typo in &lt;a href="http://appjet.com/docs/librefbrowser?page=quickforms"&gt;QuickButton documentation&lt;/a&gt;: It defaults to GET, not POST.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/366128245" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-Ljpz4kxlu</feedburner:origLink></item><item><title>Change on August 3, 2008 at 10:36:32 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/355082840/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Mon, 04 Aug 2008 00:36:32 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LRJXU0bnZ</guid><description>&lt;h3&gt;Code Editor&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Fixed bug in IE where selection couldn't be scrolled out of view.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;p&gt;&lt;b&gt;page:&lt;/b&gt; The default page HTML is more standards-compliant.  (It was just shy of being valid XHTML.) We also removed some HTML-style comments from inside the automatically-generated &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag created by an &lt;code&gt;&lt;font color="green"&gt;/* appjet:client */&lt;/font&gt;&lt;/code&gt; section.&lt;/p&gt;&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;p&gt;&lt;b&gt;page:&lt;/b&gt; Added support for setting a page's &lt;em&gt;favicon&lt;/em&gt;, using &lt;code&gt;page.setFavicon(url)&lt;/code&gt;. This change also provides a default favicon, the AppJet "jet" icon, which prevents browsers from requesting &lt;code&gt;/favicon.ico&lt;/code&gt;, thus making debug logs a bit cleaner. (See the &lt;a href="http://en.wikipedia.org/wiki/Favicon"&gt;Wikipedia article on favicons&lt;/a&gt; for more information.)&lt;/p&gt;&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;p&gt;&lt;b&gt;utilities:&lt;/b&gt; Fixed a bug in &lt;code&gt;wget&lt;/code&gt; that prevented proper character encoding detection if non-ascii characters appeared before a &lt;code&gt;meta&lt;/code&gt; tag describing the character encoding.&lt;/p&gt;&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;p&gt;&lt;b&gt;printing:&lt;/b&gt; The &lt;code&gt;html&lt;/code&gt; function for printing raw HTML now takes multiple arguments and concatenates them.&lt;/p&gt;&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;p&gt;&lt;b&gt;quickforms:&lt;/b&gt; Added support for chaining operations.&lt;/p&gt;&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;p&gt;&lt;b&gt;dispatching:&lt;/b&gt; Fixed a bug in &lt;code&gt;patternDispatch&lt;/code&gt; that required the &lt;code&gt;path not found&lt;/code&gt; handler to be the 5th argument; now it must be the last argument.&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/355082840" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LRJXU0bnZ</feedburner:origLink></item><item><title>Change on July 30, 2008 at 1:48:29 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/350312074/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Wed, 30 Jul 2008 03:48:29 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LQr0lfPXv</guid><description>&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;p&gt;&lt;b&gt;storage:&lt;/b&gt; We've reimplemented our storage backend to be much faster! We've also added a number of functions that should help make StorableCollections much more useful:&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;code&gt;sortBy("-foo")&lt;/code&gt;: use to sort a StorableCollection by a property name, instead of writing a sorting function. Prepend "&lt;code&gt;-&lt;/code&gt;" to reverse the sort order.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;code&gt;limit(7)&lt;/code&gt;: use to limit a StorableCollection view to a set number of items. A &lt;code&gt;forEach&lt;/code&gt; over a limited view will just end after the limited number of items.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;code&gt;skip(10)&lt;/code&gt;: use to return a view that skips the first &lt;em&gt;n&lt;/em&gt; items of a collection.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;code&gt;reverse()&lt;/code&gt;: use to return a view that reverses the sort order of the given view.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;code&gt;first()&lt;/code&gt;: use to get the first object in a StorableCollection or view.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;In addition, we've expanded these functions:&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;code&gt;filter({foo: [3,4]})&lt;/code&gt;: &lt;code&gt;filter&lt;/code&gt; can now take array arguments and matches objects that match any of the given values.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Be sure to check out the &lt;a href="http://appjet.com/docs/libref/storage.html"&gt;storage docs&lt;/a&gt; for more detail on how to use the new methods, and let us know in the &lt;a href="http://forum.appjet.com/"&gt;forums&lt;/a&gt; if you experience any trouble with the new implementation!&lt;/p&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/350312074" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LQr0lfPXv</feedburner:origLink></item><item><title>Change on July 15, 2008 at 8:58:38 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/336218352/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Tue, 15 Jul 2008 10:58:38 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LPT35dgPa</guid><description>&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;The &lt;a href="http://appjet.com/directory"&gt;App Directory&lt;/a&gt; now defaults to sorting by which apps have been commented on recently.  It also shows how many comments there are on an app below its name.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/336218352" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LPT35dgPa</feedburner:origLink></item><item><title>Change on July 10, 2008 at 12:53:12 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/331517255/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Thu, 10 Jul 2008 02:53:12 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LOxqFkQwZ</guid><description>&lt;p&gt;We've sure been busy!&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;p&gt;New graphical site design.  We're working on updating the look and feel of the AppJet site.  Thanks to user &lt;a href="http://appjet.com/user/dylan/"&gt;dylan&lt;/a&gt; for some great site design suggestions!&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Comment on apps.&lt;/b&gt;  Have something to say about someone's app?  Post a comment.  You'll be notified by e-mail when someone comments on your app or responds to a comment you wrote.  Comments on app &lt;code&gt;foo&lt;/code&gt; are available at &lt;code&gt;comments.foo.appjet.net&lt;/code&gt; and linked from the "view source" page.  You can give people a link to comment on your app by putting this in your app code:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;&lt;code&gt;print(link("http://comments."+appjet.appName+"."+appjet.mainDomain));&#xD;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Notification Settings.&lt;/b&gt;  Now you can &lt;a href="http://appjet.com/account/notifications"&gt;control your notification settings&lt;/a&gt; to determine when AppJet sends you emails.&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;IDE&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;p&gt;The &lt;b&gt;URL bar in the preview pane&lt;/b&gt; now updates as you click on links in your app.  (This long-standing issue  was difficult to fix for technical reasons.)&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;p&gt;Misc improvements to the Shell pane.&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Code Editor&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Fixed bug where pasting in Safari would sometimes put all code on one line.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;App Hosting&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;p&gt;Fixed bug where logging errors to the debug log would fail with an error in the presence of unusual cookies.&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;p&gt;Fixed a bug where &lt;code&gt;response.stop(true)&lt;/code&gt; would prevent bytes written using &lt;code&gt;appjet._native.writeBytes&lt;/code&gt; from being printed.&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;p&gt;Added a &lt;a href="http://appjet.com/docs/libref/response.html#response.writeBytes"&gt;&lt;code&gt;response.writeBytes(data)&lt;/code&gt;&lt;/a&gt; function for printing raw binary data.&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;p&gt;Fixed a number of cases where storage errors wouldn't get logged to the debug log.&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;p&gt;&lt;b&gt;tags:&lt;/b&gt; elements with attribute values that contains quotes and newlines are now escaped properly.  This lets you put (almost) arbitrary strings into the &lt;code&gt;value&lt;/code&gt; attribute of INPUTs, for example.&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;p&gt;&lt;b&gt;printing:&lt;/b&gt; Added a &lt;code&gt;form&lt;/code&gt; command and &lt;code&gt;image&lt;/code&gt; command for easy HTML printing, much like the &lt;code&gt;link&lt;/code&gt; command.&lt;/p&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/331517255" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LOxqFkQwZ</feedburner:origLink></item><item><title>Change on July 2, 2008 at 1:45:24 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581209/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Wed, 02 Jul 2008 03:45:24 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LODHBlslR</guid><description>&lt;h3&gt;IDE&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Added a debug log to make it easier to debug apps. Get more information on the &lt;a href="http://appjet.com/docs/ide#debuglog"&gt;IDE guide page&lt;/a&gt; or in the &lt;a href="http://appjet.com/docs/libref/dlog.html"&gt;dlog library reference&lt;/a&gt;.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581209" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LODHBlslR</feedburner:origLink></item><item><title>Change on June 27, 2008 at 1:52:18 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581210/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Fri, 27 Jun 2008 03:52:18 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LNk4IVQkx</guid><description>&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Redesigned &lt;a href="http://appjet.com/myapps"&gt;My Apps&lt;/a&gt; page that separates libraries from apps and presents app statistics in a more readable display.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581210" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LNk4IVQkx</feedburner:origLink></item><item><title>Change on June 24, 2008 at 9:57:39 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581212/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Tue, 24 Jun 2008 23:57:39 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LNXQAtmJP</guid><description>&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;overview pages:&lt;/b&gt; Every app in the directory or on a user's profile now has a public "overview" page that contains some interesting stuff such as:&lt;/li&gt;&#xD;
  &lt;ul&gt;&#xD;
     &lt;li&gt;When the app was created and last updated.&lt;/li&gt;&#xD;
     &lt;li&gt;What app it was cloned from and what apps have cloned it.&lt;/li&gt;&#xD;
     &lt;li&gt;What libraries it imports and what libraries import it.&lt;/li&gt;&#xD;
     &lt;li&gt;Response timing information.&lt;/li&gt;&#xD;
   &lt;/ul&gt;&#xD;
  &lt;li&gt;As an example, check out &lt;a href="http://appjet.com/app/135075630/overview"&gt;http://appjet.com/app/135075630/overview&lt;/a&gt;.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581212" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LNXQAtmJP</feedburner:origLink></item><item><title>Change on June 19, 2008 at 6:13:50 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581213/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Thu, 19 Jun 2008 20:13:50 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LN3HCInYd</guid><description>&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;There are now automatically-generated documentation pages for every AppJet library and app.  To view the docs, visit &lt;em&gt;docs&lt;/em&gt;.appname.appjet.net.  For example, check out &lt;a href="http://docs.lib-example.appjet.net/"&gt;docs.lib-example.appjet.net&lt;/a&gt;.  Read more in the &lt;a href="http://appjet.com/docs/guide/gendocs"&gt;Guide Page on Documenting Code&lt;/a&gt;.&lt;/li&gt;&#xD;
  &lt;li&gt;We re-designed the view-source page for apps and libraries.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581213" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LN3HCInYd</feedburner:origLink></item><item><title>Change on June 19, 2008 at 1:12:58 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581214/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Thu, 19 Jun 2008 03:12:58 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LMz8BwvGQ</guid><description>&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;b&gt;util&lt;/b&gt;: File uploads are no longer restricted to the &lt;code&gt;/fileupload/*&lt;/code&gt; paths, and forms with file inputs can be now be POSTed to any path. (But don't forget to set &lt;code&gt;enctype="multipart/form-data"&lt;/code&gt; in your form tag!) For an example app that uses file uploads, see the &lt;a href="http://fileupload-test.appjet.net/"&gt;fileupload-test&lt;/a&gt; app and its &lt;a href="http://source.fileupload-test.appjet.net/"&gt;source&lt;/a&gt;.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581214" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LMz8BwvGQ</feedburner:origLink></item><item><title>Change on June 17, 2008 at 1:24:14 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581215/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Tue, 17 Jun 2008 15:24:14 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LMqPEoFe6</guid><description>&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;b&gt;facebook&lt;/b&gt;: Fixed a bug that prevented error pages with stack traces from showing up on facebook apps through the facebook site.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581215" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LMqPEoFe6</feedburner:origLink></item><item><title>Change on June 3, 2008 at 7:51:05 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581216/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Tue, 03 Jun 2008 21:51:05 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LLY7H0Qod</guid><description>&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;We have added &lt;a href="http://lib-trace.appjet.net/"&gt;lib-trace.appjet.net&lt;/a&gt; as a library for profiling the time and bytecode execution of your apps.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581216" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LLY7H0Qod</feedburner:origLink></item><item><title>Change on May 18, 2008 at 3:21:10 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581218/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Sun, 18 May 2008 17:21:10 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LK1SuPFJW</guid><description>&lt;h3&gt;IDE&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Fixed in Internet Explorer 6.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;The new syntax highlighter is used on "view source" and guide pages.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581218" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LK1SuPFJW</feedburner:origLink></item><item><title>Change on May 17, 2008 at 9:46:13 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581219/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Sat, 17 May 2008 11:46:13 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LJuG3g7c7</guid><description>&lt;h3&gt;IDE&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Fixed: quirk in Firefox where previewing an app led to perpetual loading state&lt;/li&gt;&#xD;
&lt;li&gt;Fixed: quirk where busy cursor appears after loading IDE&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Code Editor&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Fixed: bug leading to browser errors and mis-aligned highlighting&lt;/li&gt;&#xD;
&lt;li&gt;Fixed: slow bracket flashing, incremental highlighting stopping early&lt;/li&gt;&#xD;
&lt;li&gt;Added highlighting for more keywords, including all JavaScript "reserved" words&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581219" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LJuG3g7c7</feedburner:origLink></item><item><title>Change on May 16, 2008 at 11:06:21 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581220/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Sat, 17 May 2008 01:06:21 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LJreyJFlr</guid><description>&lt;h3&gt;App Hosting&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;Fixed a bug that caused headers to not be sent for requests ending with a redirect.&lt;/li&gt;&#xD;
  &lt;li&gt;Fixed a bug that caused published apps to stop responding after a long period of inactivity.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581220" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LJreyJFlr</feedburner:origLink></item><item><title>Change on May 13, 2008 at 9:14:59 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581221/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Tue, 13 May 2008 23:14:59 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LJZfMEi6x</guid><description>&lt;h3&gt;IDE&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;IDE now runs if nested inside an &lt;code&gt;iframe&lt;/code&gt;.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;App Hosting&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;Fixed a few bugs regarding content type and binary output.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581221" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LJZfMEi6x</feedburner:origLink></item><item><title>Change on May 13, 2008 at 5:32:23 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581222/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Tue, 13 May 2008 19:32:23 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LJYlJbx3e</guid><description>&lt;h3&gt;Code Editor&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;Interactive shell now supports the new editor.&lt;/li&gt;&#xD;
  &lt;li&gt;Syntax highlighting recognizes division slashes that look like a regex.&lt;/li&gt;&#xD;
  &lt;li&gt;Internet Explorer: fixed scrollbars, work around IE memory leaks that slow down the browser over time.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581222" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LJYlJbx3e</feedburner:origLink></item><item><title>Change on May 13, 2008 at 4:08:45 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/329581223/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Tue, 13 May 2008 06:08:45 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LJVV043u6</guid><description>&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;facebook&lt;/b&gt;: updated to include latest FBML tags&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;App Hosting&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;Completely rewritten app engine is highly optimized, more responsive, and paves the way for future features.&lt;/li&gt;&#xD;
  &lt;li&gt;Bytecode limit per request has been raised by 66% thanks to new, faster engine code.&lt;/li&gt;&#xD;
  &lt;li&gt;&lt;b&gt;Custom Domains&lt;/b&gt;: Requests to subdomains of registered custom domains now serve apps as well. (Previously, they redirected to the registered domain.) See &lt;em&gt;e.g.&lt;/em&gt;, &lt;a href="http://foobar.superhappychat.com/"&gt;foobar.superhappychat.com&lt;/a&gt;.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Code Editor&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;Added "error" highlighting on mismatched parentheses/curly braces/brackets.&lt;/li&gt;&#xD;
  &lt;li&gt;Support for command-arrow keys on Mac Firefox &amp;amp; Camino.&lt;/li&gt;&#xD;
  &lt;li&gt;Support for international character entry on Mac.&lt;/li&gt;&#xD;
  &lt;li&gt;Improved incremental highlighting.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/329581223" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LJVV043u6</feedburner:origLink></item><item><title>Change on May 9, 2008 at 5:27:33 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/287195450/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Fri, 09 May 2008 19:27:33 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LJBLzt8J1</guid><description>&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;b&gt;dns&lt;/b&gt;: Added DNS support. You can now programmatically &lt;a href="http://appjet.com/docs/libref/dns.html"&gt;look up the IP address for a hostname&lt;/a&gt;, and vice versa.  See &lt;a href="http://dns.appjet.net/"&gt;dns.appjet.net&lt;/a&gt; for an example.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Code Editor&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Unlimited "undo" support, accessible through a keyboard shortcut (command-Z or control-Z).&lt;/li&gt;&#xD;
&lt;li&gt;Flashing parentheses are back, and better than ever.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;code&gt;appjet:css&lt;/code&gt; sections are highlighted based on CSS syntax rules.&lt;/li&gt;&#xD;
&lt;li&gt;Fixed various browser quirks and added some optimizations for speed.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/287195450" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LJBLzt8J1</feedburner:origLink></item><item><title>Change on May 4, 2008 at 12:37:13 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/283471785/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Sun, 04 May 2008 14:37:13 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LIgwH515E</guid><description>&lt;h3&gt;IDE&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Fixed editor bug where the pane would spontaneously scroll to include the insertion point.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/283471785" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LIgwH515E</feedburner:origLink></item><item><title>Change on May 2, 2008 at 6:52:11 PM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/282487240/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Fri, 02 May 2008 20:52:11 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LIWlcoSI3</guid><description>&lt;h3&gt;IDE&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&#xD;
&lt;li&gt;Brand new code editor that &lt;a href="http://appjet.com/docs/ide"&gt;fully supports&lt;/a&gt; FireFox, IE, and&#xD;
Safari.  It also has better syntax highlighting and&#xD;
addresses all known previous issues with the old code editor.  (Undo&#xD;
support coming soon).&lt;/li&gt;&#xD;
&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;App Hosting&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;We've added the ability to host apps on &lt;a href="http://appjet.com/docs/hosting/custom"&gt;your own custom&#xD;
domain&lt;/a&gt;.  For example, &lt;a href="http://superhappychat.com/"&gt;superhappychat.com&lt;/a&gt; is hosted on AppJet.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;The frontend is now running on helma-1.6.2 and the latest JDK6 from Sun.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;AppJet Blog&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;There's a &lt;a href="http://blog.appjet.com/"&gt;blog post&lt;/a&gt; about our renewed commitment to JavaScript on AppJet.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/282487240" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LIWlcoSI3</feedburner:origLink></item><item><title>Change on April 18, 2008 at 12:11:11 AM PDT</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/272709427/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Fri, 18 Apr 2008 02:11:11 -0500</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LH8M3HprU</guid><description>&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;We added a "forgot password" page, in case you forgot your account password.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/272709427" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LH8M3HprU</feedburner:origLink></item><item><title>Change on February 13, 2008 at 5:49:51 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/234701038/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Wed, 13 Feb 2008 19:49:51 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-LB4pVu6tJ</guid><description>&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;b&gt;utilities&lt;/b&gt;: We've added the ability to send arbitrary headers as part of a &lt;code&gt;wget()&lt;/code&gt; or &lt;code&gt;wpost()&lt;/code&gt; call. See the &lt;a href="http://appjet.com/docs/libref/utilities.html#wget"&gt;utilities library reference page&lt;/a&gt; for more information.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/234701038" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-LB4pVu6tJ</feedburner:origLink></item><item><title>Change on January 18, 2008 at 3:30:08 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/219131016/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Fri, 18 Jan 2008 17:30:08 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L8cEfxL7g</guid><description>&lt;h3&gt;IDE&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;b&gt;code sections&lt;/b&gt;: Parsing of code sections is now more lenient. Arbitrary whitespace is now allowed inside and after the section header (but there still can't be any characters before the first &lt;code&gt;/*&lt;/code&gt;). These are now all valid:&#xD;
&lt;pre&gt;/* appjet:clent */&#xD;
/*     appjet:client  */   &#xD;
/* appjet:client     */&#xD;
&lt;/pre&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;b&gt;response&lt;/b&gt;: &lt;code&gt;response.redirect("foo")&lt;/code&gt; now works if the path redirected to is exactly 7 characters in length.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/219131016" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L8cEfxL7g</feedburner:origLink></item><item><title>Change on January 17, 2008 at 5:45:31 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/218572449/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Thu, 17 Jan 2008 19:45:31 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L8WwESdCo</guid><description>&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;New &lt;a href="http://appjet.com/directory"&gt;app directory&lt;/a&gt; with&#xD;
    app descriptions and sort options.  We pre-filled the descriptions&#xD;
    by scraping the text of each app's home page, but you can edit the&#xD;
    description from the publish tab of the IDE.&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;You can now see &lt;a href="http://appjet.com/myappstats"&gt;realtime&#xD;
stats&lt;/a&gt; for apps you have published.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;IDE&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;There is now an option to hide apps from appearing in your public&#xD;
profile.  You can change this setting in the publish tab of the&#xD;
IDE.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/218572449" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L8WwESdCo</feedburner:origLink></item><item><title>Change on January 13, 2008 at 3:33:29 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/216142565/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Sun, 13 Jan 2008 17:33:29 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L890tHIHB</guid><description>&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
 &lt;li&gt;New home page for developers.  To see it, visit &lt;a href="http://appjet.com/"&gt;appjet.com&lt;/a&gt; while you are signed in.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/216142565" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L890tHIHB</feedburner:origLink></item><item><title>Change on January 13, 2008 at 2:00:55 AM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/216142566/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Sun, 13 Jan 2008 04:00:55 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L85iK1tGB</guid><description>&lt;h3&gt;App Hosting&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;code&gt;www.{foo}.appjet.net&lt;/code&gt; and &lt;code&gt;www.{foo}.appjet.com&lt;/code&gt; now redirect to &lt;code&gt;{foo}.appjet.net&lt;/code&gt;.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;IDE&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Fixed a bug where calling &lt;code&gt;import()&lt;/code&gt; in the shell reported an error.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/216142566" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L85iK1tGB</feedburner:origLink></item><item><title>Change on January 10, 2008 at 6:42:23 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/214735182/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Thu, 10 Jan 2008 20:42:23 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L7sEs8LvB</guid><description>&lt;h3&gt;Documentation&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;We (finally) wrote a &lt;a href="http://appjet.com/docs/guide/scollections"&gt;guide page&lt;/a&gt; for StorableCollections.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/214735182" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L7sEs8LvB</feedburner:origLink></item><item><title>Change on January 9, 2008 at 10:45:00 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/214235875/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Thu, 10 Jan 2008 00:45:00 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L7nNQLjKh</guid><description>&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;b&gt;email&lt;/b&gt;: Fixed a bug so emails now come from noreply@{your-app-name}.appjet.&lt;i&gt;net&lt;/i&gt;, instead of noreply@{your-app-name}.appjet.&lt;i&gt;com&lt;/i&gt;.&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;b&gt;cron&lt;/b&gt;: We've added a new library, &lt;code&gt;cron&lt;/code&gt;, that lets developers schedule "tasks" for arbitrary dates in the future. Those tasks take the form of normal HTTP requests, but with a method of "CRON". Developers specify which path and what parameters, if any, should be sent with the request. For example:&#xD;
&lt;pre&gt;import("cron");&#xD;
&#xD;
function cron_main() {&#xD;
    sendEmail("you@example.com", "A scheduled message!", request.params.body);&#xD;
}&#xD;
&#xD;
function get_main() {&#xD;
    schedule(new Date("Jan 10, 2008, 3:40 pm PST"), "/", {body: "Yo!"});&#xD;
}&#xD;
&#xD;
dispatch();&lt;/pre&gt;&#xD;
See the &lt;a href="http://appjet.com/docs/libref/cron.html"&gt;library reference&lt;/a&gt; for more details.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/214235875" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L7nNQLjKh</feedburner:origLink></item><item><title>Change on January 9, 2008 at 3:14:25 AM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/213730612/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Wed, 09 Jan 2008 05:14:25 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L7iciuzjz</guid><description>&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
 &lt;li&gt;There are now "view source" links for published apps on the &lt;a href="http://appjet.com/myapps"&gt;myapps page&lt;/a&gt;.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;IDE&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
 &lt;li&gt;the AppJet Code Editor now supports FireFox 3b3 for syntax highlighting.&lt;/li&gt;&#xD;
 &lt;li&gt;the preview version of apps now executes the last-saved version of the app code, even if you never clicked the "reload" button.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/213730612" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L7iciuzjz</feedburner:origLink></item><item><title>Change on January 4, 2008 at 8:30:52 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/211464829/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Fri, 04 Jan 2008 22:30:52 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L7Jb1u4Bb</guid><description>&lt;h3&gt;Forum&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;The &lt;a href="http://forum.appjet.com/"&gt;AppJet Forum&lt;/a&gt; now identifies you by your AppJet account&lt;/b&gt;, as part of making it more integrated with the main site.  This is a big change behind the scenes, but we've taken steps to make the transition as smooth as possible.&lt;/li&gt;&#xD;
  &lt;li&gt;Existing forum posts have been assigned to appropriate AppJet accounts as determined from our records.&lt;/li&gt;&#xD;
  &lt;li&gt;Forum notifications are sent to the e-mail address on your AppJet account page.  Other forum settings can be set in the "Profile" section of the forum.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/211464829" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L7Jb1u4Bb</feedburner:origLink></item><item><title>Change on January 3, 2008 at 5:54:39 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/210868231/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Thu, 03 Jan 2008 19:54:39 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L7D7Aw9dj</guid><description>&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;public profiles&lt;/b&gt;: user accounts on appjet.com can now have public profiles associated with them, linked from the directory and the view source pages.  To edit your profile, click on your username on the right side of the top nav.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/210868231" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L7D7Aw9dj</feedburner:origLink></item><item><title>Change on January 3, 2008 at 12:40:07 AM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/210383965/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Thu, 03 Jan 2008 02:40:07 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L78ujBo1d</guid><description>&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;b&gt;utilities&lt;/b&gt;: We've added a &lt;code&gt;sendEmail()&lt;/code&gt; function to allow apps to programmatically send email. See the &lt;a href="http://appjet.com/docs/libref/utilities.html#sendEmail"&gt;library reference&lt;/a&gt; for more details.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;b&gt;dispatch&lt;/b&gt;: AppJet now supports all HTTP methods, including HEAD, PUT, DELETE, OPTIONS, and TRACE. (Previously only GET and POST were supported.) The built-in &lt;code&gt;dispatch()&lt;/code&gt; function properly dispatches these methods.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Happy New Year!!&lt;/h3&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/210383965" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L78ujBo1d</feedburner:origLink></item><item><title>Change on December 31, 2007 at 2:45:26 AM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/208901271/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Mon, 31 Dec 2007 04:45:26 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L6rshKbqR</guid><description>&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Developers can now create their own libraries. See our &lt;a href="http://appjet.com/docs/guide/userlib"&gt;guide page&lt;/a&gt; for more information.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/208901271" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L6rshKbqR</feedburner:origLink></item><item><title>Change on December 26, 2007 at 9:31:17 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/206865034/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Wed, 26 Dec 2007 23:31:17 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L6TDVWuon</guid><description>&lt;h3&gt;Libraries&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;b&gt;utilities&lt;/b&gt;: &lt;code&gt;wget()&lt;/code&gt; and &lt;code&gt;wpost()&lt;/code&gt; now follow 301, 302, and 303 redirects, up to a maximum of 5 deep. (If this maximum is a problem, &lt;a href="http://forum.appjet.com/"&gt;let us know&lt;/a&gt;!)&lt;/li&gt;&#xD;
&lt;li&gt;&lt;b&gt;utilities&lt;/b&gt;: &lt;code&gt;wget()&lt;/code&gt; properly gets binary data for appropriate content-types. See &lt;a href="http://imagethief.appjet.net/"&gt;imagethief&lt;/a&gt; (unmoderated and potentially not work-safe!) for an example.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;b&gt;quickforms&lt;/b&gt;: &lt;code&gt;form.addInputText()&lt;/code&gt; now lets you override any attribute of the input tag with the &lt;code&gt;opts&lt;/code&gt; argument. For example, to make a password input:&#xD;
&lt;pre&gt;var f = new QuickForm();&#xD;
f.addInputText("t", {label: "enter password", type: "password"});&#xD;
print(f);&lt;/pre&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/206865034" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L6TDVWuon</feedburner:origLink></item><item><title>Change on December 17, 2007 at 7:42:04 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/201989108/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Mon, 17 Dec 2007 21:42:04 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L5c9HYXyj</guid><description>&lt;h3&gt;App Hosting&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&#xD;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Apps are now hosted on appjet.net instead of appjet.com!&lt;/b&gt; The official URL&#xD;
for &lt;i&gt;my-app&lt;/i&gt; is now http://&lt;i&gt;my-app&lt;/i&gt;.appjet.net/. This change&#xD;
is permanent and effective immediately.  In order to make the transition go as smoothly as&#xD;
possible, the old URLs&#xD;
(&lt;i&gt;my-app&lt;/i&gt;.appjet.com) will redirect to the new ones for the&#xD;
forseeable future.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;We apologize for any inconvenience this causes, but the change was&#xD;
necessary for security reasons.&lt;/p&gt;&lt;/li&gt;&#xD;
&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/201989108" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L5c9HYXyj</feedburner:origLink></item><item><title>Change on December 16, 2007 at 11:57:23 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/201532495/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Mon, 17 Dec 2007 01:57:23 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L5XL21Fvl</guid><description>&lt;h3&gt;App Hosting&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Published apps now show a more user-friendly error page.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/201532495" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L5XL21Fvl</feedburner:origLink></item><item><title>Change on December 16, 2007 at 1:52:32 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/201359135/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Sun, 16 Dec 2007 15:52:32 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L5UslF4pV</guid><description>&lt;h3&gt;Libraries:&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&#xD;
&lt;li&gt;&lt;b&gt;unicode/charset support&lt;/b&gt;: Much-improved for &lt;code&gt;wget()&lt;/code&gt; and&#xD;
printing.  &lt;code&gt;wget()&lt;/code&gt; (and &lt;code&gt;wpost()&lt;/code&gt;) now detect&#xD;
the character encoding of the page they fetch, by looking for&#xD;
a Content-Type header or a corresponding META tag near the beginning&#xD;
of the document.  Additionally, unicode characters that you print raw&#xD;
are now correctly encoded in UTF-8 by default, and you can change the&#xD;
encoding using the new &lt;code&gt;response.setContentType&lt;/code&gt; by&#xD;
specifying a charset.&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;b&gt;utilities&lt;/b&gt;: &lt;code&gt;wget()&lt;/code&gt; and &lt;code&gt;wpost()&lt;/code&gt; now&#xD;
supply the user-agent of the browser that was used to make the request.  This means you can access Google and other sites that block access to scripts.&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;b&gt;storage&lt;/b&gt;: Fixed a bug concerning the empty string used as a property name.&lt;/li&gt;&#xD;
&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Documentation&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;wget()&lt;/code&gt; and &lt;code&gt;wpost()&lt;/code&gt; now have&#xD;
better-documented handling of HTTP error cases.&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/201359135" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L5UslF4pV</feedburner:origLink></item><item><title>Change on December 13, 2007 at 3:11:56 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/199986361/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Thu, 13 Dec 2007 17:11:56 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L5DfAiA3k</guid><description>&lt;h3&gt;Libraries:&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;b&gt;printing&lt;/b&gt;: printing of StorableObjects works again for objects that have StorableCollections several levels deep.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;b&gt;storage&lt;/b&gt;: StorableObjects with no properties can now be retrieved with getStorable.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;b&gt;storage&lt;/b&gt;: &lt;code&gt;StorableCollection.add()&lt;/code&gt; now returns the added object. (This is useful in cases where you add an object literal and want to get its &lt;code&gt;id&lt;/code&gt;!)&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/199986361" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L5DfAiA3k</feedburner:origLink></item><item><title>Change on December 11, 2007 at 10:46:04 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/199986362/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Wed, 12 Dec 2007 00:46:04 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L53oS25vw</guid><description>&lt;h3&gt;Libraries:&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;b&gt;response&lt;/b&gt;: Added a function &lt;code&gt;response.setCacheable()&lt;/code&gt; for telling browsers whether or not to cache the response.  By default, AppJet apps now tell browsers to not cache requests.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;b&gt;utilities&lt;/b&gt;: &lt;code&gt;wget()&lt;/code&gt; and &lt;code&gt;wpost()&lt;/code&gt; now throw catchable exceptions under error conditions.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;b&gt;facebook&lt;/b&gt;: New Facebook App Wizard that makes it easy to set up an app on Facebook's site for your AppJet app.&lt;/li&gt;&#xD;
&lt;li&gt;&lt;b&gt;printing&lt;/b&gt;: Arrays now pretty-print in a similar format to StorableCollections.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Documentation:&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
 &lt;li&gt;There is now a guide with examples for &lt;a href="http://appjet.com/docs/guide/facebook"&gt;building facebook apps&lt;/a&gt;.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Misc:&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;You can now change your account password on the &lt;a href="http://appjet.com/account/profile"&gt;profile page&lt;/a&gt;.&lt;/li&gt;&#xD;
&lt;li&gt;The app directory is now moderated.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/199986362" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L53oS25vw</feedburner:origLink></item><item><title>Change on December 10, 2007 at 4:42:13 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/198955301/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Mon, 10 Dec 2007 18:42:13 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L52Kqjj9l</guid><description>&lt;h3&gt;Libraries:&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;AppJet apps can now have a &lt;code&gt;/* appjet:common */&lt;/code&gt; section of code.  This code will be executed on the server, and included in the client-side script tag.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;h3&gt;Documentation:&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
 &lt;li&gt;We started a &lt;a href="http://appjet.com/docs/ide"&gt;documentation page&lt;/a&gt; for the IDE with a list of known bugs.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;h3&gt;IDE:&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Added an option to switch between plaintext syntax-highlighted editing modes.&lt;/li&gt;&#xD;
&lt;li&gt;Added feature to revert code buffer to previously published code.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;h3&gt;Misc:&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
 &lt;li&gt;New home page design, with &lt;a href="http://appjet.com/about/"&gt;info about our company&lt;/a&gt;.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/198955301" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L52Kqjj9l</feedburner:origLink></item><item><title>Change on December 8, 2007 at 12:43:19 PM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/197294069/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Sat, 08 Dec 2007 14:43:19 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-L4jp8Babs</guid><description>&lt;h3&gt;Libraries:&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&#xD;
&lt;li&gt;&lt;b&gt;printing&lt;/b&gt;: print now inserts a newline inside the angle brackets (&amp;lt; &amp;gt;) of HTML close tags, to aid in the readability of generated HTML source.&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;b&gt;printing&lt;/b&gt;: regular JavaScript objects, &lt;code&gt;StorableObjects&lt;/code&gt;, and &lt;code&gt;StorableCollections&lt;/code&gt; are now pretty-printed in nicely formatted tables. (Note: If you &lt;em&gt;don't&lt;/em&gt; want this new functionality, use &lt;code&gt;String(&lt;em&gt;obj&lt;/em&gt;)&lt;/code&gt;. The shell continues to show returned values without pretty-printing; use &lt;code&gt;print()&lt;/code&gt; to pretty-print in the shell.)&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;b&gt;storage&lt;/b&gt;: StorableObjects and StorableCollections now have shorter auto-generated ids.&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;b&gt;storage&lt;/b&gt;: added a &lt;code&gt;StorableCollection.size()&lt;/code&gt; method -- also works on filtered and sorted views, but may one day be approximate on large collections for efficiency reasons.&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;b&gt;utilities&lt;/b&gt;: added a &lt;code&gt;StringSet.forEach(&lt;em&gt;f&lt;/em&gt;)&lt;/code&gt; method to call a function over the strings in a &lt;code&gt;StringSet&lt;/code&gt;.&lt;/li&gt;&#xD;
&#xD;
&lt;li&gt;&lt;b&gt;facebook&lt;/b&gt;: fixed a bug where &lt;code&gt;fb.init()&lt;/code&gt; failed in newly-created AppJet apps.&lt;/li&gt;&#xD;
&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Frontend:&lt;/h3&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&#xD;
&lt;li&gt;View source pages now load &lt;em&gt;even faster&lt;/em&gt;.&lt;/li&gt;&#xD;
&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/197294069" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-L4jp8Babs</feedburner:origLink></item><item><title>Change on December 4, 2007 at 5:25:45 AM PST</title><link>http://feeds.feedburner.com/~r/AppjetChangelog/~3/197115929/change</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">AppJet</dc:creator><pubDate>Tue, 04 Dec 2007 07:25:45 -0600</pubDate><guid isPermaLink="false">tag:changelog.appjet.com,2008:obj/obj-2934392036141-1196774745841</guid><description>&lt;h3&gt;News&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;We created the &lt;a href="http://forum.appjet.net/"&gt;AppJet&#xD;
      Forum&lt;/a&gt;, a great place to get help and talk about AppJet.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Libraries:&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&#xD;
  &lt;li&gt;&lt;code&gt;print()&lt;/code&gt; no longer encloses all its arguments inside a&#xD;
    &lt;code&gt;DIV&lt;/code&gt; tag.  To address the desire to print something on its&#xD;
    own line, we have added the convenience&#xD;
    function &lt;code&gt;printp()&lt;/code&gt;.  &lt;code&gt;printp(x)&lt;/code&gt; is short&#xD;
  for &lt;code&gt;print(P(x))&lt;/code&gt;.  (This is the HTML equivalent of other&#xD;
  languages' &lt;code&gt;println()&lt;/code&gt; functions).&lt;/li&gt;&#xD;
&#xD;
  &lt;li&gt;&lt;code&gt;request.params&lt;/code&gt;, &lt;code&gt;request.headers&lt;/code&gt;,&#xD;
  and &lt;code&gt;request.cookies&lt;/code&gt; are now objects.  (Old functions&#xD;
  preserved for compatability, but will disappear during the next&#xD;
  version increment).&lt;/li&gt;&#xD;
&#xD;
  &lt;li&gt;We added a &lt;code&gt;link()&lt;/code&gt; function to the tags library for&#xD;
  printing links.&lt;/li&gt;&#xD;
&#xD;
  &lt;li&gt;&lt;code&gt;request.isGet&lt;/code&gt; and &lt;code&gt;request.isPost&lt;/code&gt; are now&#xD;
  camel-cased.  (old names preserved for compatability).&lt;/li&gt;&#xD;
&#xD;
  &lt;li&gt;E4X is disabled in the JavaScript interpreter.&lt;/li&gt;&#xD;
&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;Documentation&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;We have a &lt;a href="http://appjet.com/docs/"&gt;developer&#xD;
  guide&lt;/a&gt;, full of many new examples to help you get started&#xD;
  with AppJet!&lt;/li&gt;&#xD;
&#xD;
  &lt;li&gt;We made some formatting updates to&#xD;
  the &lt;a href="http://appjet.com/docs/libref/"&gt;Library Reference&lt;/a&gt;&#xD;
  to provide better navigation.&lt;/li&gt;&#xD;
&#xD;
  &lt;li&gt;The tags library and experimental QuickForms library are now&#xD;
  documented.&lt;/li&gt;&#xD;
&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;h3&gt;appjet.com&lt;/h3&gt;&#xD;
&lt;ul&gt;&#xD;
&#xD;
  &lt;li&gt;Improved access from schools.  (Our sessions system was&#xD;
  incompatible with some schools' HTTP proxies).&lt;/li&gt;&#xD;
&#xD;
  &lt;li&gt;View source pages now load much faster.&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/AppjetChangelog/~4/197115929" height="1" width="1"/&gt;</description><feedburner:origLink>http://changelog.appjet.com/change?id=obj-2934392036141-1196774745841</feedburner:origLink></item></channel></rss>
