Document Information

Last modified:
2011/07/13 22:17 by ecker

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 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.
  • Support has been improved for popular JavaScript runtimes. This includes server-side and/or DOM-less environments like Node.js, Rhino or HTML5 WebWorkers. Besides pre-built qooxdoo packages, a skeleton is included for creating qooxdoo apps targeting those environments specifically.
  • 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)
  • Minor fixes in the environment system. (#4669) (#5014)
  • 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 allowUrlSetting environment 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)
  • qx.lang.String.capitalize can handle UTF-8 strings (#5229)
  • Add ISO Format Strings to qx.util.format.DateFormat (#4612)
  • qx.util.Base64 has been rewritten and both encode and decode methods are present now (#4694)
  • Remove browser dependencies in qx.util.Base64 (#5282).
  • Various improvements of the finite state machine (#4940, #4941)
  • Added DOM 0 event handling as fallback (#5067).
  • Added the frame number as post id to the hash code to get unique hash values over frames (#4886).
  • (#4885) Added a new dispose profiling feature

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

  • New mobile widgets: Toolbar (#4861) , SelectBox (#4813) , Slider (new theme) (#4817), RadioButton (#5161) , CheckBox (#4805)
  • 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)
  • Added more mobile operating systems to the environment checks. (#5112)
  • Added BlackBerry operating system check (#5113)
  • Optimized calculation for viewport orientation on new tablet devices (#5114)
  • Using meta tags to prevent phone number auto linking (#4964)
  • Updated iScroll to version 4 (#4794)
  • Build version is now using optimized and smaller version of iScroll (#4887)
  • Updated PhoneGap API (#5189)
  • Added unit tests for all mobile widgets and improved stability of the framework (#4905)

GUI Toolkit

UI Core

  • Fixed action switch on running drag and drop session (#5170).
  • It was not possible to stop a drag and drop session by pressing escape. This is now fixed (#5171).
  • Add "justify" option to textAlignment (#5082)
  • Disabled the icon binding set up by commands for check boxes and radio buttons. (#5180)
  • Prevent opening menus on right click. (#5125)
  • Fixed size calculation of the resize frame. (#5045)
  • Added horizontal scrolling. (#4163)

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

  • Harmonized the radio button behavior of menu, toolbar and form. (#5013)
  • Better disposing of form renderer. (#5271)

Layouts

  • Layout system fix. (#5008)

Widgets

  • Auto-size textarea computes needed height more precisely and respects initial wrap setting in Webkit browsers (#4976)
  • Minor fix in the table widget. (#4256) (#5162)
  • 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

  • Finished VirtualTree implementation and added missing features like different selection models (#3653).
  • Improved virtual List grouping. Added possibility to manage the group creation manually (#4970).
  • Added missing placeholder to the VirtualComboBox (#5238).

Theming

  • Added rgba color support and used it for shadows. (#4681) (#5069)
  • Added visual disabled state for the tab view. (#4947)
  • Added rounded corners to the resize frame of windows in the Modern theme. (#4945)
  • Improved CSS3 gradients implementation for IE10 and Webkit. (#5006)
  • Minor fix in the decorators. (#5050)
  • Minor fix in the Modern theme's tab view. (#5236)
  • Minor fix in the Modern theme. (#5020)
  • Removed the focus indicator for the tab view in the simple theme. (#5126)

Applications

  • Added splash screens to feedreader and playground. (#5101)
  • Moved common code used in different applications into separate libraries. (#5035)

Showcase

  • Added new showcase sample (mimicking an instant messenger) based on the virtual List.

Mobile Showcase

  • Fixed unreadable touch area for iOS (#5145)
  • Deployed iOS build version (#5052)

Widgetbrowser

  • Added missing widgets to widgetbrowser (#4962).

Demobrowser

  • Added possibility to hide/show test applications (#2758).
  • Added a Web Worker demo (#5175)
  • Added a demo of HTML5 Audio/Video wrappers (#5121)
  • The Demo Browser's toolbar has overflow handling now (#4215)

Playground

  • Updated the code editor used in the playground. (#4768)

Feedreader

  • Fixed unreadable article area in mobile version for iOS (#5144)
  • Deployed iOS build version (#5052)

API Viewer

  • Mixin includes can now be toggled (#5053)
  • Hyperlinked JavaScript native types to MDC (#5048)
  • A working indicator shows up for long-running tasks (#4580)
  • An "internal" filter was added, plus a table of contents above the documentation header (#823)

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.Table cell
  • 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

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 variants to 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, like qx.core.Environment.get("foo") ? "bar" : "baz". (#4892)
  • Limited support to optimize qx.core.Environment.get() calls in relational comparisons, like if(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

  • 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 icons key 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/blocks renamed to pretty-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").

Information

Last modified:
2011/07/13 22:17 by ecker

Account

 
 
A book on qooxdoo RIAs, authored  by community members
JS Tutorial, JavaScript Tutorial, JavaScript Guide, Learn JavaScript JS, How To Learn JS, Learning JavaScript
 

Bad Behavior has blocked 0 potential spam attempts in the last 7 days.