Switched to Leiningen 2. It is now required for projects using
Removed support for versions of Clojure prior to 1.4.
Basic support for App Engine SDK 126.96.36.199. Added servlet LocalApiProxy property
to container to fix LocalChannelServlet (thanks to Christoph Mewes).
Added option to use high replication datastore localy (thanks to Christoph
Fixed a bug in the application order of :after-load hooks (thanks to Shawn
Basic support for App Engine SDK 1.5.5.
Added support for :before-save and :after-load hooks to defentity.
Made an internal change which improves support for interactive REPL use from
various programming tools. Clojure modes in Eclipse, IntelliJ IDEA, and
NetBeans should now work. VimClojure, SLIME (swank-clojure), and plain REPL
(lein repl) use should unaffected by this change.
Support for Clojure 1.3.
Basic support for App Engine SDK 1.5.4.
Datastore object counts are no longer limited to 1000 (thanks to Justin
Added support for deleting tasks from task queues.
Basic support for App Engine SDK 1.5.3.
Various small enhancements.
Basic support for App Engine SDK 1.5.2.
Added support for reading classpath resources by their internal URLs through
the appengine-magic.core/resource-url function (thanks to Mark Rathwell).
Basic support for App Engine SDK 1.5.1.
Improved static file Content-Type handling in development mode (thanks to
Brian Rowe and Tobias Raeder).
Respect the APPENGINE_HOME environment variable if project.clj omits
:appengine-sdk (thanks to Dave Lambert).
Added appengine-magic.services.channel/parse-presence to support presence
notifications from the Channel service.
Concurrent requests are now enabled by default in all new projects.
Basic support for App Engine SDK 1.4.3.
Added appengine-magic.core/appengine-app-id and
appengine-magic.core/appengine-app-version helper functions.
Breaking change: moved the web application from resources/ to war/. To
adapt your application to this layout, just rename your application's
resources/ directory to war/. If you use classpath resources (with the
appengine-magic.core/open-resource-stream function), move them all back to
Added appengine-magic.services.datastore/key-str, to get a better handle on
entity records' IDs.
Breaking change: the result object returned by the fetch function of the
URL Fetch service no longer converts header names to keywords.
Made it possible to store datastore entities in memcache during interactive
Added a hack to allow uploads to the Blobstore service from an application,
without involving a web browser.
Modified the Datastore service to optionally support storing values of
arbitrary readbly-printable Clojure types.
Added the Images service.
Breaking change: removed appengine-magic.services.url-fetch/fetch-async
function and replaced its functionality with a new :async? keyword to
Added the Channel service.
Made swank.core/break work inside Ring handlers (using middleware included
Added the ability to directly execute App Engine API calls from the REPL.
Enabled the use of the administrative console (/_ah/admin), including the
datastore viewer, from the interactive REPL environment (thanks to Yuri
Added two new Leiningen tasks: appengine-update and
appengine-dev-appserver. They allow maintaining multiple App Engine
production environments with different versions (e.g., production and
Added support for new versions of the Google App Engine SDK.
Fixed a bug in use of :prefetch-size and :chunk-size parameters to ds/query.
Improved user service testing support (thanks to Masashi Iizuka).
Added support for VimClojure (thanks to Alex Bolodurin).
Added as-* type conversion functions to the Datastore service.
Breaking change:appengine-magic.services.blobstore/uploaded-blobs now
takes a Ring request map parameter (instead of an HttpServletRequest). This
is for consistency with the rest of the services API.
Added a version of multipart-params middleware which works in App Engine
(thanks to Conrad Barski).