App Hosting
- The per-app storage limit has been raised to 50MB.
App Hosting
- JavaScript 1.7 support (server-side).
- Error pages are no longer cached for users behind ISPs with caching proxy servers.
Storage
- Fixed bug where removing a property of a StorableObject wouldn't remove it from iteration during the same request.
IDE/Editor
- Faster document highlighting through data structure efficiency.
- Better handling of pasted HTML from web pages.
- Safari: fixed warning in console.
Email API
- Emails sent using sendEmail now pass the callback verification test that some SMTP servers do.
Beginner's Guide
- Fixed incompatilibity between embedded IDE and some proxy servers.
appjet.jar
- Server always treats source files as UTF-8.
appjet.jar
- We have released appjet.jar, everything you need to host AppJet apps yourself. (What do you think?)
appjet.com
- Easy-to-follow imports: import statements in the view source page are automatically converted to links to that library's documentation. See this forum post.
- Referrer stats: The app overview page now shows the top URLs that refer traffic to the app. Example.
Code Editor
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).
Various IE bugs fixed, most notably pasting plaintext containing blank lines.
IDE
- IE6: Several quirks and cosmetic glitches were addressed while launching the Beginner's Guide.
Documentation:
- We have started a FAQ.
Absolute Beginner's Guide to Programming on the Web:
- It's now open to the public!
appjet.com:
- New docs page with simpler navigation.
- Complete redesign of the home page.
- New reference documentation for storage API, with more examples.
- The Library Reference now highlights example code
IDE:
- Improved error messages for some common cases such as missing parenthesis, quote, etc. (More improvements to come).
Hosting:
- Many storage system optimizations. In particular, it is now dramatically faster to perform lots of successive writes of small amounts of data.
- Requests to www.app-name.appjet.net now redirect to app-name.appjet.net.
Misc:
- Fixed bug in sign-up form where it was improperly caching invalid usernames.
- Cursor is now a "text insertion icon" always in code editor.
- Post/reply links now appear in the forum when you're not signed in, and redirect to sign-in page.
- The mini-ide in the absolute beginner's guide now has a "clear storage" button when developing database-backed apps.
- Fixed typo in QuickButton documentation: It defaults to GET, not POST.
Code Editor
- Fixed bug in IE where selection couldn't be scrolled out of view.
Libraries
page: 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
<script>tag created by an/* appjet:client */section.page: Added support for setting a page's favicon, using
page.setFavicon(url). This change also provides a default favicon, the AppJet "jet" icon, which prevents browsers from requesting/favicon.ico, thus making debug logs a bit cleaner. (See the Wikipedia article on favicons for more information.)utilities: Fixed a bug in
wgetthat prevented proper character encoding detection if non-ascii characters appeared before ametatag describing the character encoding.printing: The
htmlfunction for printing raw HTML now takes multiple arguments and concatenates them.quickforms: Added support for chaining operations.
dispatching: Fixed a bug in
patternDispatchthat required thepath not foundhandler to be the 5th argument; now it must be the last argument.
Libraries
storage: 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:
sortBy("-foo"): use to sort a StorableCollection by a property name, instead of writing a sorting function. Prepend "-" to reverse the sort order.limit(7): use to limit a StorableCollection view to a set number of items. AforEachover a limited view will just end after the limited number of items.skip(10): use to return a view that skips the first n items of a collection.reverse(): use to return a view that reverses the sort order of the given view.first(): use to get the first object in a StorableCollection or view.
In addition, we've expanded these functions:
filter({foo: [3,4]}):filtercan now take array arguments and matches objects that match any of the given values.
Be sure to check out the storage docs for more detail on how to use the new methods, and let us know in the forums if you experience any trouble with the new implementation!
appjet.com
- The App Directory 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.
