qooxdoo 1.5 (2011-07-13)
Summary
This is a regular minor release, thus it not only includes bugfixes but also many new features and improvements.
Highlights
- The Mobile Framework part of qooxdoo lets you create mobile apps that run on smartphones and tablets. Introduced with the previous release it now ships with many improvements: the dedicated mobile widget set adds form elements like checkboxes, radiobuttons, sliders, and selectboxes, all supporting form validation, and the commonly used toolbars. A new mobile tutorial gets you started quickly.
- A Virtual Tree now complements the existing set of "virtual widgets" for rich internet applications (RIAs). Those widgets can handle and display very large data sets. The new virtual Tree supports single and multi selection, custom rendering and dynamic tree expansion. It leverages data binding, just like the virtual SelectBox, ComboBox and List. The latter one is now featured in the Showcase.
- A state-of-the-art IO stack has been integrated as a replacement for the previous transport layer. It keeps up with recent developments of browser vendors and the framework itself. It includes transport features like cross-origin requests via Xhr or JSONP, and nicely integrates with data binding, e.g. to build up data stores. As a preview also experimental REST support is included.
- The new Web Fonts feature is a cross-browser implementation of the CSS @font-face syntax and integrated with qooxdoo's theming system.
- The Feature Configuration Editor helps developers create feature-based builds of qooxdoo applications that are tailored towards groups of browsers with similar feature sets, e.g. on mobile devices. The resulting applications are typically smaller in terms of code size and contain fewer runtime feature checks.
- Developer support has again seen many practical improvements, from a more concise albeit more advanced toolchain, over extended debugging and testing capabilities to a set of comprehensive tutorials.
Bugfixes & Enhancements
See this detailed list of over 300 issues resolved for qooxdoo 1.5, which includes the fixes of the accompanying qooxdoo 1.4.2 patch release. Besides fixes for defects many enhancements made it into qooxdoo 1.5. There is also detailed list for those issues that were resolved for 1.5 exclusively.
Upgrading
You should be aware of a few issues while upgrading from the previous release. See the migration section at the end of this document for details about new deprecations, removed experimental code and configuration changes.
If you need a bugfix-only drop-in replacement, you might want to check-out qooxdoo 1.4.2 instead, the corresponding patch release.
Framework
Core
- Removed all deprecated code. (#4565)
- The optimization settings with which the application was built, are available as environment keys
qx.optimization.strings,qx.optimization.privates, … See the API documentation of qx.core.Environment. - Fixed check for
allowUrlSettingenvironment setting (#5174)
- Added static helpers for parsing and modifying URIs (
qx.util.Uri). - Added static helpers for handling requests (
qx.util.Request). - Minor fix in the part loading. (#4139)
Browser Support
- Fixed engine version detection for Opera 10+. (#4963)
Transport
- New full-featured IO stack, providing low-level transport methods (
qx.bom.request.*) and a higher-level request abstraction (qx.io.request.*) (#4607). - Experimental client-side wrapper of a REST resource (
qx.io.rest.Resource) (#4709). - Limit timeout work-around in ScriptLoader to browsers not supporting the error handler (#4923)
- Changed old IO implementation to use
qx.lang.Json.Support legacy date literal. (#4294). - Allow issuing standard JSON-RPC Version 2 requests from
qx.io.remote.Rpc(experimental).
Low-level
- Added support for cross-browser web fonts based on @font-face
- Wrapper for HTML5 Local/Session Storage (#4656)
- Introduced HTML5 custom data attributes (
data-*) support (#4754) - Added experimental HTML5 FileReader wrapper (#4991).
- Allow source property to be set to null if Iframe uses cross-origin URL (#4481)
JS Runtimes
- Added environment check for the runtime used, which features checks for Node.js and Rhino. (#5202)
- More reliably detect arrays in Rhino environments (#5109).
- ObjectRegistry runs in DOM-less environments (#5231).
- Published pre-built "qxoo" as a "qooxdoo" package with npm, the Node Package Manager. (#4380)
Mobile
- Form Validation and rendering (#5142)
- List widgets supports rendering button widgets (#5297)
- Selection of list is removed when scrolled (#5290)
- Added "wrap" property for label (default is true) (#5247)
- Textarea does not display the resize handle anymore (#5205)
- List widget reacts on changes of the model (#5133)
- Improved slider widget performance (#4817)
GUI Toolkit
UI Core
Data Binding
- Data binding stores use new IO stack, but can be changed to use old implementation (#5104).
- Experimental REST data store (
qx.data.store.Rest) (#5305). - Minor fix in the list controller. (#4728)
- Fixed wrong selection behavior of the list controller. (#4839)
- Improved dispose handling of models. (#5291)
- Loosened restrictions on JSON marshaling. (#5223)
- Speed up JSON marshaling. (#4699)
- Added resource and alias handling to the JSON data store. (#4425)
- Error event of the JSON store is now a data event which contains the response. (#5103)
- Minor fix in the data array. (#5051)
Form
Layouts
- Layout system fix. (#5008)
Widgets
- Auto-size textarea computes needed height more precisely and respects initial wrap setting in Webkit browsers (#4976)
- The tables's image cell renderer allows scaling (#5047).
- Added the missing handling for disabled slide bars which did not disabled its buttons. (#5042)
- In HtmlArea underline and strike-through now work again for Webkit-based browsers (#4023)
Virtual Widgets
Theming
Applications
Showcase
- Added new showcase sample (mimicking an instant messenger) based on the virtual List.
Mobile Showcase
Widgetbrowser
- Added missing widgets to widgetbrowser (#4962).
Demobrowser
Playground
- Updated the code editor used in the playground. (#4768)
Feedreader
API Viewer
Test Runner
- Always show test names in test results in one line.
- Updated Sinon to 1.1.1 and expose new features in
qx.dev.unit.MMock(#5148). - Introduced experimental stubbing/mocking helpers (injectStub, revealMock, shallowStub, deepStub) that help writing isolated unit tests.
- Increased security of internally used test PHP files. (#4977)
Simulator
- qxDragAndDropToObject: Added support for drag operations starting on a specific
qx.ui.table.Tablecell - Added support for
qx.ui.mobile.*widgets
Feature Configuration Editor
- (#4985) Added the Feature Configuration Editor, a tool that helps create configurations for feature-based builds
Skeletons
- Mobile skeleton is using environment variables for code optimization (#5153)
- New experimental skeleton "basic" which targets non-classical JavaScript runtime environments like Rhino, Node.js or WebWorkers.
Tooling
Generation
- All script-generating jobs (source, source-all, source-hybrid, build) are now generated through the same generation pipeline, which allowed for a serious code simplification in the generator. As a trade-off, all compile configurations now have to supply the keys compile-options/files/app-root and compile-options/code/except. You will get warnings if they are missing.
- Generator console output has been trimmed significantly; the progress indication is now limited to a few changing characters on screen, instead of stretching out series of dots and asterisks.
- Fixed expanding environment keys in output file names (This was a regression).
- The default loader template has been changed, and with it some of the macros that are replace by the generator.
%{Uris}and%{PackageHashes}have been dropped,%{Packages}been added. (#5072) - CSS files can now be integrated into qooxdoo apps using the new add-css config key.
- Speed improvements to the parser, concerning large string literals.
Configuration
- Parts configuration: The config key packages/additional-merge-constraints is now true by default, which avoids certain situations during package merging.
- New experimental job- and top-level config key config-warnings allows to selectively silence warnings from config operations, such as shadowing jobs, or providing an exclude key.
- Unresolved macros in job definitions are no longer silently accepted, but raise an exception.
- Add new allowed key
variantsto compile-options/code/optimize array. - Add support for file globs with
*in copy-files/files key, e..g."files" : ["foo*", "*.bar", "dir1/t*.txt"].
Optimization
- Limited support to optimize
qx.core.Environment.get()calls in ternary operators, likeqx.core.Environment.get("foo") ? "bar" : "baz". (#4892) - Limited support to optimize
qx.core.Environment.get()calls in relational comparisons, likeif(qx.core.Environment.get("foo") < 9). (#4857) - Variant optimization is now a configuration item, i.e. will not be performed automatically for the build version, but has to be turned on in the configuration.
- Detection modules for qx.core.Environment checks are now only loaded when the check is actually used in the application (e.g. for "plugin.flash"). This saves application size, at the expense of slightly longer compile times.
Internationalization
- Obsoleted .po entries are now recovered (with a potential existing translation) if the msgid is re-introduced.
Code Formatting
- When pretty-printing code, the insertion of TODOC templates ahead of methods etc. can now be configured, using the pretty-print/comments/block/add config key (true by default).
- Various bug fixes in the pretty-printer.
Documentation
- Theming tutorial added. (#4708)
- Added new virtual List tutorial.
- Added qooxdoo mobile tutorial "Creating a Twitter Client with qooxdoo mobile"
- New tutorial: Unit Testing
- New basic tool chain tutorial.
- Updated the architecture diagram. (#5039)
- Increase resolution of images referenced in manual (to 120dpi) in order to make images appear smaller in print output (#4930).
Migration
- Deprecated the
iconskey in the theme definition, because it was never considered (#5120). - Deprecated
qx.dev.Pollution(#5019). - Deprecated
qx.util.Json(#4294). - Removed experimental
qx.io.HttpRequest.
- Configuration: Key
pretty-print/blocksrenamed topretty-print/code; please update your config.json if you are using this key. - If you have own configurations for your build versions, and want variant optimization to be on, you now need to set it on explicitly, e.g. in the compile-options/code/optimize config key, or the OPTIMIZE macro (just add "variants").
