Skip to content

Releases

2.0.0 20260829

Choose a tag to compare

@seanox seanox released this 29 Aug 06:10
BF: Build: Optimizing npm access
BF: Build: Correction of the missing jsdelivr default
BF: Composite: Correction of the registration of the HTTP events
    With repeated calls of XMLHttpRequest.open for a request, the listeners were
    registered more than once and the events Composite.EVENT_HTTP_* were fired
    more than once.
BF: Documentation: Update of content
BF: DataSource: Correction when fetch text nodes
    Incorrect return values in XPath queries that return text nodes.
CR: Composer: Refactoring the rendering
    Allocation of responsibility according to the appropriate method, without
    affecting runtime behavior.
CR: Documentation: Using GitHub Pages
CR: Scripting: Omission of macro #module
    This became obsolete with the automatic sourceURL directive in modules,
    making debugging more convenient.
CR: Test: Expansion of benchmarks/tests
CR: Tutorials: Integration into the project
CR: Project: Renamed to composite-js
    - Name is meant to better convey the core concept
    - Terminology has been refined throughout -- composite is a concept,
      composer refers to the components that implement it
CR: Project: Refactoring after renaming to composite-js
    - composite.js and the Composite object become composer.js and the Composer
      object

1.9.0 20260717

Choose a tag to compare

@seanox seanox released this 17 Jul 18:11
1.9.0 20260717
BF: Composite: Validation corrections and optimization
    - Omission of the reportValidity method call. More annoying than helpful due
      to the loss of focus (standard browser behavior).
BF: DataSource: Correction for the use of locator/path with (sub)directories
BF: DataSource: Correction of the method fetch when using the cache
BF: Extensions: Correction of window.location.contextPath
    The context path does not end with a slash and can be empty if the
    application is located directly under the main domain of the server.
BF: Routing: Correction / workaround if the hashchange event is missing
    Correction for browsers that do not trigger a hashchange event when the
    route is changed from / to /#.
CR: Composite: Switch to microtasks-based scheduling
    Microtasks-based scheduling to make update batching and execution order more
    deterministic.
    - Microtasks run immediately after the current JavaScript code and before
      the next macrotask (window.setTimeout) starts
    - Macrotask are not executed until the next event loop iteration and after
      all microtasks have been processed.
CR: Composite: Renaming Composite.asynchron to Composite.asynchronous
CR: Composite: Renaming Markup Hardening to Markup Protection
    Renamed the terminology to better describe the purpose of the feature.
CR: DataSource: Optimization and extension
    - Added support for fully qualified locator/path
      For access to sources outside the data directory.
    - Switch to stricter URL
      Only one and two slashes are accepted between protocol and path.
    - Added XPath support for locators
CR: Markup: iterate also supports numbers
    Positive numbers cause a list of values from 0 to (number -1), negative
    values cause a descending list of values from (number +1) to 0.
CR: Markup: import / output optimization and extension for DateSource
    - new syntax for DataSource locator and transformation
      use: xml://example.xml + xslt://example-template.xslt
    - new syntax for DataSource locator with XPath
      use: xml://example.xml?<xpath>
CR: Message: Optimization and extension
    - Renamed method customize to populate
      The name customize was not concise and is needed in a new context.
CR: Test: Update web server to version 5.9.0

1.8.0 20250207

Choose a tag to compare

@seanox seanox released this 07 Feb 17:29
BF: Review: Corrections and optimization
BF: Test: Correction for the output of messages with timestamp
BF: Test: Correction of Assert.assertSame(), incorrect implementation
BF: Composite: Correction of partial rendering of iterate
CR: Composite: Validation corrections and optimization
    - Validation works strictly by default
      The validation must explicitly return true so that the input data from the
      HTML elements is synchronized to the models. The behavior can be
      deactivated with the declaration: validate="optional", which was the
      previous default behavior. In the markup, the attribute strict is
      therefore omitted.
    - Validation message is shown by default as native browser tooltip
      In the markup, the attribute notification is therefore omitted.
    - Validation message added redirection to an attribute
      If a message begin with @<attribute>:, which includes the return values of
      express, these are redirected to the attribute declared in this way.
CR: Composite: Added Composite.lookup(selector)
    Determines the corresponding meta-object for the passed selector.
CR: Composite: Conversion from acceptors to interceptors
CR: Composite: Conversion to a separate scope page for expression variables
    Variables are set by expressions, which includes the variables from the
    attribute iterate, now use their own scope page and are no longer global.
CR: Extension: Review, corrections and optimization
    - Renamed window.location.pathcontext in window.location.contextPath
CR: Release: Review, corrections and optimization
    - Added eslint for ES6 check
    - Omission of the micro version without routing
      This unnecessarily inflated the number of release (channels).
    - Reworked file structure:
      - aspect-js.js
        Deployment version, ES6 optimized, minimized and without testing API
      - aspect-js-debug.js
        Debugging version, ES6 optimized, minimized and without testing API
      - aspect-js-debug-max.js
        Debugging version, ES6 optimized and without testing API
      - aspect-js-debug-testing.js
        Debugging version, ES6 optimized, minimized and with testing API
      - aspect-js-debug-testing-max.js
        Debugging version, ES6 optimized and with testing API
      - aspect-js-max.js
        Deployment version, ES6 optimized and without testing API
      - aspect-js-source.js
        Source version without testing API
      - aspect-js-source-testing.js
        Source version with testing API
      - aspect-js-testing.js
        Testing version, ES6 optimized, minimized and with testing API
      - aspect-js-testing-max.js
        Testing version, ES6 optimized and with testing API
CR: Review: Corrections and optimization
    - Compatibility with "use strict"
    - Compatibility with ES6
CR: SiteMap: Review, refactoring, corrections and optimization
    - Renaming to routing
    - Change to activation of routing to the attribute boolean route in the body
      tag; values are not supported
    - Omission of predefined paths like SiteMap.customize(...), replaced by
      dynamic paths based on the nested composites
    - Omission of functional paths, the existing acceptors is the better way
    - Omission of variable path, becomes obsolete with the new dynamic routing
    - Optimization of the path for routing
    - Conversion from acceptors to interceptors
CR: Test: Change the start to ant -f development/build.xml run

1.7.0 20241228

Choose a tag to compare

@seanox seanox released this 28 Dec 13:27
BF: Composite: Correction from mounting (dock/undock) composites with namespace
BF: Composite: Correction when inserting markup into composites
    If the markup for a composite was removed from the DOM,
    content was not inserted when the composite was reinserted into the DOM.
BF: Composite: Correction when loading CSS modules
    If a module is first requested programmatically by name, the CSS was not
    loaded when the module was later loaded as an element.
BF: Composite: Correction of the view model binding
    Initial values of modules were not set in the corresponding HTML elements.
BF: Composite Mount Events: Correction of the unwanted assignment of child elements
BF: Reactive: Correction of incorrect creation of proxies for HTML elements
BF: Reactive: Correction of unwanted rendering when docking modules
CR: Composite: Omission of the attribute namespace
    Replaced by extended composite ID name@namespace (separated by colon).
    e.g. model@a:b:c -> ./modules/a/b/c/model.js -> a.b.c.model
    The approach with the attribute namespace was not practical.
CR: Composite: Omission of attributes strict in combination with composite
    The combination of the attribute strict was not practicable for namespaces.
    The notation for the module files is now used 1:1.
CR: Composite: Added EVENT_MODULE_LOAD when a module is loaded
    Is called once per module.
CR: Composite: Added EVENT_MODULE_DOCK/EVENT_MODULE_READY/EVENT_MODULE_UNDOCK
CR: Composite Render Iterate: Optimization for updating markup
    If the array does not change in length, the existing markup is only updated
    without replacing it completely.
CR: Composite Render Iterate: Optimization of the error output in the view
CR: Composite Render Condition: Optimization of the error output in the view
CR: Composite Render: Optimization of IDs before rendering
    Possible expressions at initial IDs are already resolved before rendering.
CR: Datasource: Optimization of language selection
    Alternatively, the languages of the browser without tags are considered.
    RFC 5646: lang-tag-tag-... -> lang
CR: Documentation: Reduction to English
CR: Expression: Optimization of the return of errors
    Errors are returned as error objects instead of text.
CR: Expression: Extension of the element expression by //...// for embedding logic
    e.g. {{#[element://index+1//]}} when index is a variable
CR: Expression: Optimization when interpreting in combination with text
    e.g. <input id="file_{{index +1}}"/> previously brackets had to be used
CR: Messages: Change in case of multiple keys, the first one wins
    Overwriting messages at runtime is generally not possible.
CR: Messages: Added locales/messages for modules
    Locales/messages are loaded with the module from the module directory.
    Modules can extend messages but not change/overwrite them. Locales/messages
    for modules are used as global locales/messages, no difference in use.
CR: Test: Update web server to version 5.7.1

1.6.1 20230410

Choose a tag to compare

@seanox seanox released this 10 Apr 08:39
BF: Composite: Added recursion detection for include of composite markup
    If a recursion is detected when the module is included, an error is output.
BF: Composite: Correction of validation with message and notification without model
BF: Composite: Correction of mounting of child elements in a condition
BF: Composite: Correction of the queue during rendering when a lock exists
BF: Expression: Unification of the suppressed output
    Only the value undefined but not the string "undefined" suppresses the output.
    False and comparable non-true values are now output.
BF: Reactive: Correction for the use of arrays
    The data type incorrectly changed from array to object.
BF: Reactive: Correction/optimization for elements with iterate
    The renderer always updates the top element with iterate in the DOM so that
    temporary variables are available in the expressions.
BF: Reactive: Correction of recursive triggered updates
BF: Review: Optimization and corrections
    Added detection of future incompatibilities.
    Reduce the size of the releases.
BF: Test: Correction of wrong output of Element.prototype.toPlainString()
CR: Reactive: Optimization of object-model-view decoupling
CR: Reactive: Refactoring to distinguish from frameworks with similar name
CR: SiteMap: Inactive by default
    Attribute static is then not required for composites.
    Simplifies micro frontends without face-flow.
    SiteMap becomes active with the call of the method SiteMap.customize(...).
CR: Expression: Extension of the syntax for elements and variables
    - support of the underscore at the beginning
    - support of complex element syntax #[...]
CR: Expression: Optimization (consequent new implementation)
    - complete new approach for parser and interpreter
CR: Expression: Omission of automatic use of get and is methods for fields
    - since getters and setters are available in JavaScript
CR: Expression: omission of tolerance for undefined parts in object chains (like JSP EL)
    - is too extensive in JavaScript with ReferenceError/TypeError/undefined/false/null/...
    - is replaced by (?...), in case of error this syntax in the brackets will return false
CR: Composite: Errors during rendering are output in the view
    - Rendering does not abort
    - Errors are also logged as errors on the console
    - Errors can also be subscribed as a composite event
CR: Composite: Renamed method Object.using(...) in Object.use(...)
CR: Composite: Optimization when loading module resources
    - change of sequence to: JS, CSS, HTML (markup)
    - JavaScript for modules is only loaded if no JavaScript model exists
    - CSS for modules is only loaded if HTML is also loaded
    - omission of the HEAD request
    Minimizes HTTP requests in the background and when loading the page.
CR: Composite: Extension of the element ID with a unique identifier
    format: name:qualifier...#identifier@namespace...:model
    The unique identifier is for the view and business logic, but has no effect on composite.
CR: Composite: Added @-attributes as attribute templates for elements
    Creates corresponding attributes, which is convenient if they use expressions as value.
CR: Composite: Changing the behavior of the validation
    Synchronization and function execution are no longer blocked by violations.
    For the previous strict behavior, the attributes validate and strict must be combined.
CR: Scripting: Outsourcing and isolating the execution of Composite JavaScript
CR: Scripting: Optimization macros for Composite JavaScript
    - can now be used anywhere in the code, also in combination with conditions
    - can now also be separated from the next command with a semicolon
CR: Scripting: Added macro #export for Composite JavaScript
    Makes local variables and constants from modules usable in the global namespace.
CR: Scripting: Added macro #use for Composite JavaScript
    Creates namespaces if they do not already exist.
CR: Scripting: Added macro (?...) for Composite JavaScript
    In case of an error the value of the enclosed logic is equivalent to false
    without throwing an error, except for syntax errors.
    except for syntax errors.
CR: Datasource: Optimization when loading module resources
    - omission of the HEAD request
    - omission of XML error when the request receives an error page
    Minimizes HTTP requests in the background and when loading the page.
CR: Messages: Added messages as alternative object tree for associative array Messages
CR: Messages: Added Messages.customize(label, ...values) to fill placeholders with values
CR: Namespace: Renamed method Namespace.using(...) in Namespace.use(...)
CR: Extension: Math.unique(...) replaces Math.uniqueId(...)
CR: Extension: Math.serial() replaces Math.uniqueSerialId(...)
    The method is now completely time-based and independent of Math.unique().
    The serial is still unique and as text chronologically sortable.
CR: Release: Added the manual (de/en) to the release package (zip)
CR: Release: Channels with major number are omitted
CR: Release: Revision of the release channels
    - standard: contains all minimized
      for test and deployment
    - standard-max: contains all
      not minimized and with comments
      for development and testing
    - core: contains all minimized, except the Test API
      for deployment
    - core-max: contains all minimized, except the Test API
      not minimized and with comments
      for development and testing
    - micro: contains all minimized, except SiteMap, minimized
      for development and testing and deployment of micro frontends without face-flow
    - micro-max: contains all minimized, except SiteMap
      not minimized and with comments
      for development and testing of micro frontends without face-flow
    - micro-core: contains all minimized, except the Test API and SiteMap
      for deployment of micro frontends without face-flow
    - micro-core-max: contains all minimized, except the test API and SiteMap
      not minimized and with comments
      for development and testing of micro frontends without face-flow

1.5.1 20230107

Choose a tag to compare

@seanox seanox released this 07 Jan 20:23
BF: Release: Correction of the missing release directory for jsDelivr
CR: Release: New channel for lite version
    Lite is a version without test module/extension.

1.5.0 20230105

Choose a tag to compare

@seanox seanox released this 05 Jan 07:01
BF: Review: Optimization and corrections
BF: Documentation: Correction of encoding
BF: Build: Optimization / correction of the release process
BF: Composite Events: Correction of the missing selector
    for: EVENT_RENDER_START, EVENT_MOUNT_START, EVENT_RENDER_NEXT, EVENT_MOUNT_NEXT
BF: Test: Correction of the output of failed assertions
CR: Reactive: Added for a reactivity rendering
    Rendering can be reactive to changes in data objects and trigger partial
    rendering at consumers
CR: Composite: Added a domain concept based on namespaces
    In the markup, the parent composite elements that use the attribute namespace
    define the namespace to be used for the model and modules.
CR: Composite: Aligned to the syntax for: COMPOSITE_ID / ELEMENT_ID / CUSTOMIZE_SCOPE
    ELEMENT_ID characters : and @ can only be used correctly
    COMPOSITE_ID / ELEMENT_ID character - is omitted, analogous to the syntax for CSS and variables in JavaScript
    CUSTOMIZE_SCOPE must start with _ a-z A-Z according to the W3C standard
CR: Composite: Extension of the element id for an optional reference
    The reference to a module in the namespace is added at the end of the ID syntax,
    after qualifiers and separated by the @ character:
          e.g. buttonSend:...@Imprint:Contact
    As with qualifiers, the : character can be used to separate object levels.
CR: Composite Events: Extended of EVENT_RENDER_NEXT for generated text nodes
    If text nodes contain expressions, they are split and reassembled from a
    sequence of new static and dynamic text nodes. EVENT_RENDER_NEXT now also
    captures the and text nodes thus created during rendering.
CR: NPM: Change to a package with scope (is also already in 1.4.0)
    The change was made afterwards of the 1.4.0 release.
CR: Build: Releases are now only available on the release page
CR: Build: Switch to UglifyJS
CR: Server: Added Ant task to start and stop the web server
CR: Playground: Added as a playground for development
    Develop with the current sources without build.
CR: Test: Update web server to version 5.5.x
CR: Test: Added Assert.assertUndefined(...) / Assert.assertNotUndefined(...)

1.4.0 20211210

Choose a tag to compare

@seanox seanox released this 09 Dec 18:59
BF: Composite: Correction in the use of attributes
BF: Composite Expression Language: Line breaks in the expressions are supported
BF: Composite: Correction for a URL without a file
BF: DataSource: Correction for a URL without a file
BF: MVC SiteMap: Correction of the method customize when using variable paths
BF: Review: Correction/optimization JavaScript (no functional change)
BF: Test: Correction in determining the browser engine for WebKit and Blink
CR: Composite Expression Language: Added keywords eeq (===), nee (!==)
CR: Composite: Added attribute strict for loading of modules/composites
CR: Extension Namespace: Added method create
CR: Extension: Added method window.location.combine to combine paths
CR: License: Changed to Apache License Version 2.0
CR: Test: Integration of a web server
CR: Test: Removal of the Edge engine after switching to Chromium
CR: Test: Removal of the distinction between MacOS and iOS

1.3.1 20200202

Choose a tag to compare

@seanox seanox released this 04 Dec 18:18
BF: DataSource: Correction for loading and caching

1.3.0 20200202

Choose a tag to compare

@seanox seanox released this 04 Dec 18:17
BF: Composite Expression Parse: Correction in the detection/processing of escape sequences
BF: DataSource Collect: Correction of the cache usage with a collector
BF: DataSource Fetch: Correction of the pattern of schema switching
BF: DataSource Fetch: Optimization of the language determination
BF: MVC SiteMap: Optimization to focus from the current target after changing the path
BF: Modules: Optimization of JavaScript processing to support import and export
BF: Composite Render: Optimization of JavaScript processing to support import and export
BF: Composite Events: Correction of the callback of HTTP events  
BF: Composite Mount: Correction to find event methods also in prototypes
BF: Composite Modules: Correction of the script processing of the #import meta-directive
BF: Composite MutationObserver: Correction for recognition of expressions in text nodes
CR: MVC Path: Simplification of the syntax restrictions    
CR: DataSource Locator: Simplification of the syntax restrictions    
CR: Composite Render Condition: Added console error output for faulty expression
CR: Composite Render Condition: Added console error output for faulty expression
CR: Composite Render: Optimization in the detection and validation of expressions
CR: Composite Render: Simplification of the syntax restrictions for variable expressions
CR: Composite Render: Simplification of the syntax restrictions for composite IDs
CR: Composite Render: Simplification of the syntax restrictions for element IDs
CR: Composite Render: Simplification of the syntax restrictions for custom tags
CR: Composite Modules: Change so that the common composite is now loaded before the first rendering
CR: Composite Modules: Added the meta directive #import to import additional composites/modules
CR: Composite Events: Renaming of EVENT_AJAX... in EVENT_HTTP...
CR: DataSource Fetch: Omission of the parameter raw
CR: DataSource Fetch: Added optional parameters for the transformation
CR: DataSource Transform: Omission of the parameter raw
CR: DataSource Transform: Added optional parameters for the transformation
CR: DataSource Transform: Change of return value from NodeList to DocumentFragment