<div dir="ltr"><div class="gmail_default" style=""><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">We are pleased to announce that Tangelo 0.9 has been released and can be downloaded from the Python Package Index, or installed by issuing a command similar to:</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">    </font><font face="monospace, monospace">pip install -U tangelo</font></div><div class="gmail_default" style=""><font face="monospace, monospace"><br></font></div><div class="gmail_default" style="">This release consists mainly of security fixes and a few new features meant to allow greater control over how services can return data and signal other conditions.</div><div class="gmail_default" style=""><br></div><div class="gmail_default" style="">One major behavioral difference is how Tangelo treats changed Python services. Before, if you edited a python file being served by Tangelo as a web service, sometimes Tangelo would "notice" the changes, and other times it wouldn't. Now, this behavior has been abstracted into a new "watch" plugin, which can be activated by launching Tangelo with the <font face="monospace, monospace">--watch</font><font face="arial, helvetica, sans-serif"> command line option. While this mode is active, all live Tangelo services will be kept up-to-date, including edits to dependencies of services, etc. For production, we recommend <i>not</i> using this option in order to prevent the live server instance from changing its behavior unexpectedly.</font></div><div class="gmail_default" style=""><br></div><div class="gmail_default" style=""><div class="gmail_default">See the full list of changes below, and read updated documentation [0] for in-depth discussion.</div><div class="gmail_default"><br></div><div class="gmail_default">As always, please don't hesitate to contact us with questions and concerns [1], or file issues on GitHub [2].</div><div class="gmail_default"><br></div><div class="gmail_default">roni</div><div class="gmail_default"><br></div><div class="gmail_default">[0] <a href="http://tangelo.readthedocs.org/en/v0.10/">http://tangelo.readthedocs.org/en/v0.10/</a></div><div class="gmail_default">[1] <a href="mailto:tangelo-users@public.kitware.com">tangelo-users@public.kitware.com</a></div><div class="gmail_default">[2] <a href="https://github.com/Kitware/tangelo/issues">https://github.com/Kitware/tangelo/issues</a></div><div class="gmail_default"><br></div><div class="gmail_default"><font size="4">Changelog</font></div><div class="gmail_default"><div class="gmail_default"><b>Added</b></div><div class="gmail_default">- Traceback is logged when a service module can't be imported</div><div class="gmail_default">- Improvements to release cycle documentation</div><div class="gmail_default">- Configuration parameter for ``$.controlPanel`` to set height of open panel</div><div class="gmail_default">  explicitly</div><div class="gmail_default">- Documentation has an explicit "hello world" example in the Quick Start section</div><div class="gmail_default">- Quiet option reduces verbosity</div><div class="gmail_default">- "Watch" plugin controls whether services and dependent modules are</div><div class="gmail_default">  automatically reloaded when they change</div><div class="gmail_default">- ``tangelo.ensurePlugin()`` function that avoids JavaScript parsing problems</div><div class="gmail_default">- Service functions ``tangelo.redirect()`` and ``tangelo.internal_redirect()``</div><div class="gmail_default">  to allow services to redirect to other resources</div><div class="gmail_default">- Service function ``tangelo.file()`` to serve arbitrary files</div><div class="gmail_default">- Configuration file takes CherryPy configuration options to apply at startup in</div><div class="gmail_default">  ``server_settings`` property</div><div class="gmail_default">- ``tangelo.util.set_server_setting()`` can be used to update CherryPy settings</div><div class="gmail_default">  at runtime</div><div class="gmail_default"><br></div><div class="gmail_default"><b>Changed</b></div><div class="gmail_default">- Documentation introduction is more focused; tutorials are more</div><div class="gmail_default">  front-and-center</div><div class="gmail_default">- Updated bundled version of GeoJS</div><div class="gmail_default">- Support Travis containers for better automated testing</div><div class="gmail_default">- Verbose option can be specified multiple times to increase application</div><div class="gmail_default">  verbosity</div><div class="gmail_default">- ``--config`` option can now accept either a YAML filename or a raw JSON string</div><div class="gmail_default">- Tangelo no longer automatically reloads changed service modules, unless the</div><div class="gmail_default">  ``--watch`` option is specified to load the new watch plugin</div><div class="gmail_default">- Bundled Mongo plugin updated to use PyMongo 3.2</div><div class="gmail_default"><br></div><div class="gmail_default"><b>Deprecated</b></div><div class="gmail_default">- ``tangelo.getPlugin()`` - use ``tangelo.ensurePlugin()`` instead</div><div class="gmail_default"><br></div><div class="gmail_default"><b>Removed</b></div><div class="gmail_default">- "System Architecture" section in README</div><div class="gmail_default"><br></div><div class="gmail_default"><b>Fixed</b></div><div class="gmail_default">- ``tangelo.paths(".")`` hack no longer necessary to import modules in same</div><div class="gmail_default">  directory as service</div><div class="gmail_default">- Persistent store no longer cleared when reloading service</div><div class="gmail_default">- Verbose option (``-v``) properly increases application verbosity</div><div class="gmail_default">- Plugins are now imported using the ``imp`` module, eliminating some spurious</div><div class="gmail_default">  error messages</div><div class="gmail_default"><br></div><div class="gmail_default"><b>Security</b></div><div class="gmail_default">- ``Server`` response header now reads "Tangelo" instead of "CherryPy" with a</div><div class="gmail_default">  version string</div><div class="gmail_default">- Runtime exceptions no longer send tracebacks to the client; instead, an error</div><div class="gmail_default">  report code is sent, which can be matched up to a traceback appearing in the</div><div class="gmail_default">  server log</div></div></div></div></div>