Latest Version: 3.6.4 PRODUCTION 13 April 2018


Dates for "public" releases are the day it was -- or is planned to be -- released, whilst dates for "internal" releases reflect the day the version number was issued to the codebase.

3.6.4 Production, 13 April 2018

Production release of 3.6.4 branch.

3.6.4 Beta, 29 March 2018 (internal)

  • FIXED bug in AJAX getXMLValuesByTagName where limit was no longer implemented.
  • FIXED bug in AJAX where the function/object check were BACKWARDS preventing drop-throgh. Whiskey tango foxtrot!!!
  • ADDED forceThis parameter to _.Event.add() to allow the 'this' value of a event callback to be set.
  • CHANGED String.splitSelector no longer returns 'div' as tag if no tagName is provided. Empty values now return an empty string instead of boolean false. This simplified the splitSelector function and makes it a hair more useful when used for something other than _.make. This also shrunk the overall code-size which is always a good thing.
  • FIXED bug in _.IS_EDGE detection routine where it was trying to check _.IS_IE before it was defined. Moving both out of the static declaration area -- where they were originally coded -- solved this.
  • FIXED _.make was still using "/" instead of "~" for passing strings as selectors on the short-circuit implementation.
  • CHANGED the special content selector for option to apply content, so that the special value selector applies value in DOM-JON.

3.6.3 Production, 15 March 2018 (public)

Minor bugfix release

  • FIXED bug in the 'after' command where appendChild was being called instead of insertBefore. No, insertAfter is NOT the answer as that doesn't even EXIST in legacy browsers! For compatibility sake you have to
    oldElement.parentNode.insertBefore(newElement, oldElement.nextSibling);
    Thankfully null/false is treated as appendChild.
  • FIXED bug in event polyfill where event.target was not being normalized. Typo pointing at event instead of window.

3.6.2 Production, 10 March 2018 (public)

Public release of 3.6.2 branch once documentation is completed and live.

  • FIXED bug on website back-end that is showing certain internal messages in the log lists. Tracked in same DB for ease of internal use, incorrect flag value was making it show up on client-side page. Will push site change with this update.

3.6.2 Beta, 7 March 2018 (Internal)

Various optimizations for size are being applied to make room for future additions whilst remaining below the 8k hard-deck for our minified gZipped target.

  • FIXED Array.isArray polyfill was checking for null on this and applied via Array.prototype. It's a static, so it would be null in most usage cases, and should have been applied in the polyfillAddStatic internal function.
  • CHANGED turned some of the static functions back into anonymous. When used via callback the overhead and performance issue is NOT as significant as most people make it out to be. Or at least not when compared to the code savings in the cases where I switched it back such as for table and list sorting. Need to analyze the regex to see if the difference is measurable there too. These are things we've all been sold as the gospel when the truth is a wee bit different.
  • CHANGED pulled unneccessary else from JSON polyfill.
  • CHANGED moved case 'object' before case 'function' inside _.ajax so that the one with the return is first... pointless change but it knocked 22 bytes off the compression. Gzip is weird... though is this happening because of gz compression quirks or because "closure" handles it differently? Either way 22 bytes is 22 bytes when you have a 8k hard ceiling.
  • REMOVED Console warning for omitting media type on _.Load.style. The default value is not "screen,projection,tv". YES I realize HTML 5 validation complains about the latter, don't even get me STARTED how how utterly jacktarded that is... just more proof the folks working on HTML 5 were unqualified to create 4 Strict's successor!
  • CHANGED selector.special and selector.content to use case statements instead of Array lookups for matching actions in _.make. Despite being more code it is clearer what is going on, and actually on the gzip minified version compresses smaller due to repetition. It probably executes faster too given what garbage JavaScript arrays are on performance.
  • FIXED bug in content handling of DSS where Image.content was being used instead of Image.alt.
  • ADDED ability to pass a DOM-JON Array directly to _.make as the first parameter. All elements in the Array will be created with the function returning true.
  • RENAMED _.madeCollection to _.ids as testers reported it makes more sense once the option to populate off the live DOM was added.
  • ADDED the optional data-elementals-idParse attribute which will trigger a node walk of document.body adding any found ID's to _.ids when elementals.js is loaded.
  • FIXED bug in _.Node.textContent relating to ability to grab Element.tagName and case insensitivity for XML vs. SGML parsing.
  • FIXED bug in website backend that disliked when properties in the reference had their names changed. Switched to doing full re-index on modify instead of partial since it's not big enough to worry about the overhead.
  • CHANGED application of both static and prototype polyfills and Object extensions from multiple calls to two functions from objects created at call-time, to a single loop of a monolithich array of objects containing ALL such polyfills. Shed code resulting in significant drop in gzipped size, and reduced "start" time in legacy IE to almost what you get in a modern browser.
  • FIXED legacy comments updated to reflect code changes. Seems minor, it isn't! Guys, if you're gonna change how sections work, update the comments next to / around it!

3.6.1 Production, 4 March 2018 (Public Release)

Live version of 3.6.1 beta 2, no significant differences

3.6.1 Beta 2, 4 March 2018 (Internal)

This versions primary objective is to optimize the code for the best gzip compression without compromising performance -- since we're butting heads with that 8k hard ceiling.

  • CHANGED _.Throw.nonStringish to return String(value) if it doesn't actually Throw, reducing code redundancies and shaving a couple bytes off the gzip compressed version.
  • REMOVED _.Metrics.windowWidth and _.Metrics.windowHeight since ALL they did is return document.documentElement.clientWidth and document.documentElement.clientHeight respectively.
  • FIXED Several sections of code using Element.tagName were written assuming XML namespace, others with HTML. Remember folks to always make tagname comparisons case insensitive if you don't know which DOCTYPE is going to be used, since that can change the case!
  • FIXED bug in eProgress.js where the 'showProgress" class was not getting set if you called eProgress.auto as your first action.

3.6.1 Beta, 25 February 2015 (Internal)

  • FIXED MAJOR bug in Array reduction polyfills. Routine to do both left and right reducing overall code wrapped in lockout for no reason and utterly broken referring to 'this' instead of 'arr'
  • ADDED _.madeCollection Object which contains any elements created with _.make that have an HTML id. The element's ID is the Object index of the element.
  • ADDED _.Throw.nonStringish to test for not only that something CAN be a string, but also that it is not boolean, empty, a number, an object or function.

3.6.0 Public, 23 February 2018 (Public Release)

  • REVISED _.make to use ~ instead of / for 'special text' in selectors.
  • ADDED ~ "fast text" behavior will for certain elements -- img, input, option, textarea -- be applied as src (for img) and value (for form elements) instead of as a new textNode. Just makes the shorthand even more useful.
  • ADDED more "special attributes" to _.make
  • FIXED some routines were changed to use the "internal" temp variable instead of a unique one, screwing up that some routines CALLING those routines also needed that global temp. The change made no sense anyways since their values weren't needed inside the 'internal' scope.

Note changes to _.make also impact _.write

3.6.0 Beta, 22 February 2018 (Internal)

Attempting further code-size optimizations, and fixing the 'quick text' bug in _.make. This is getting a minor revision number update to emphasize the change in _.make's functionality, as well as to distance itself from the issues that arose due to team conflicts on the 3.5 branch. When this version reaches production it will be the first to be promoted actively since the 3.1.0 update. Something ELSE I thought the folks I handed this off to could handle. Silly me!

3.5.2 PRODUCTION, 22 February 2018 (Public Relase)

Live version of 3.5.2a after testing.

3.5.2a Beta, 21 February 2018 (Internal)

Performing complete code audit after untested and unwanted changes implemented by FORMER team member. Time to put on the benevolent dictator hat.

  • REVERTED _.Node.text() to original behavior of manually adding and condensing textNode.nodeValue by walking the passed element with _.Node.eachAll(). This is due to the radical differences between Element.innerText and Element.textContent. See this excellent article on the topic: http://perfectionkills.com/the-poor-misunderstood-innerText/ for more about said differences. They are not the same thing, they do NOT behave consistently cross-browser, so we are NOT going to use them!
  • ADDED _.Node.eachAllNoMask and _.Node.eachChildNoMask.
  • ADDED String.condense() to result in any passed text returning all whitespace reduced to a single space, as per HTML's typical behavior.
  • ADDED polyfill for Window.getComputedStyle
  • ADDED _.Node.textFormatted which returns the contnet text condensed as per HTML, but with any element nodes that create block-style behaviors having /r/n added after them. Q: Perhaps I could make this output markdown? I'm not a fan, but it could be useful.
  • REMOVED temporarily the @ special in _.make for anchors and script tags due to conflict between URI's and the '/' used for quick text. Best solution would be to use a different character for the quick text command, though that involves rewriting all the demo's and documentation. Was a good idea, poorly implemented.

3.5.1 Production, 21 February 2018 (Public release)

Major bugfixes due to missed typo's in code fixed. I am unsure how these got introduced, many of them being flat out nonsensical changes to the codebase from the 3.4 branch. I mean lands sake even "use strict"; was screwed up! Once again, time to purge the team?

  • REVISED codebase back to original construction of ALL properties of "underscore" declared inside the self-instancing function. This allows "use strict" to be applied only to elementals should the script be concatenated with other scripts. It was originally set up that way, FORMER team member re-arranged codebase without asking first.
  • FIXED multiple variable names that were not updated to the proper 'verbose' naming format after FORMER team member shortened them all. This is all on me (Jason) since I didn't ride herd enough back in August (was needed elsewhere), nor was I as thorough as I should have been in double-checking undoing the DAMAGE.
  • FIXED issues in codebase caused by FORMER team member relying on a 'linter' telling them that intentional codebase decisions were wrong -- when they clearly were not. Little tip folks, that bitching about the mere PRESENCE of binary operators? Yeah, screw that. If you're going to use an automated tool, at least know when what it is telling you is grade A farm fresh manure!
  • FIXED complete gibberish variable assignment in AJAX routine preventing onprogress from even functioning!

3.5.1a Beta, 10 February 2018 (internal)

Error checking and minor revisions in preparation for 3.5.1 bugfix release.

  • ADDED Check for command attributes "after, before, first, last, replace" that apply elements to the DOM inside _.make so that if the attribute object contains more than one each of these an error is thrown halting execution.
  • MODIFIED _.make so that the aformentioned "DOM addition" command attributes are performed after all other attributes are applied to the element. This avoids the problem of legacy IE being unable to apply certain attribute values -- such as type="" -- to an element that is already on the live DOM.

3.5 Production, 25 January 2018 (Public Release)

Production release of the 3.5 branch. Laughably more time was spent on documenting the changes than were needed on testing them.

3.5b Beta, 8 December 2017 (internal)

  • ADDED _.make attribute array functionality is now available in the content parameter of _.Node.write as the code for handling that has been moved into that function. This lets you easily/quickly add JSON build DOM structures using _.Node.write instead of having to always make at least one new parent node with _.make.
  • ADDED _.Metrics.windowWidth and _.Metrics.windowHeight
  • RENAMED _.normalize to _.safeString so as to not cause confusion with String.normalize. Special thanks to "IronWulf" for pointing that out.

3.5a Beta, 24 November 2017 (internal)

  • ADDED passage of String in additon to array for _.make
  • ADDED polyfill for non-standard Number.isInteger

3.4 Production, 17 November 2017 (Public Release)

Bugfix release

  • FIXED bug in 'after' parameter of _.Node.write
  • FIXED code redundancy between _.Node.write and _.make
  • ADDED Multiple properties and polyfills to _.Math incliding EPSILON, MAX_SAFE_INTEGER, MIN_SAFE_INTEGER

3.3 BETA, 16 November 2017 (Internal)

Testing further changes to _.make and _.Node.write

3.2 PRODUCTION, 14 November 2017 (Public Release)

Changes were so minor and worked well enough we're skipping the internal testing cycle and releasing early. Hopefully this won't whip around and bite us in the tuchas.

3.2 RC 1, 12 November 2017 (internal)

  • COMPLETED rewrite of how _.Node.write is handled internally to allow lookups of what write methods are available.
  • COMPLETED Addition of "children" attribute to _.make to allow more rapid deployment of DOM based content without resorting to innerHTML.
  • COMPLETED New polyfills and extensions for the Number and Math objects.
  • COMPLETED String.htmlSpecialChars

3.1 PRODUCTION, 6 November 2017 (Public Release)

First version to pass quality testing internally. Sadly the automated deployment messed up a few things hence a quick re-upload.

  • Passed internal testing

3.0 RC 1, 17 July 2017 (Public release)

A few bugfixes after stress testing legacy IE, but nothing major so RC and public release here we come. So many changes to the website between live and local, here's hoping I don't screw this up.

  • COMPLETED The reference section has now been completely rewritten to match the current version of elementals.js, with a new navigation subsystem to aid in getting around it. The GIANT master list of "underscore" properties was getting a bit unweildy when you just wanted one of the subsection. The change in the codebase to sub-objects like _.Class, _.Node, and so forth greatly aided in making the documentation easier to follow and the codebase itself easier to maintain.
  • TO-DO Update the underying website code so that the content area method/propery lists uses the same data sources as the sidebars.

3.0 Beta 4, 15 July 2017 (internal working group only)

  • FIXED Forgot that "delete" is a reserved word in legacy IE, so using it as a method name on a object we have to wrap it in quotes when creating it for IE8/earlier.
  • "this" fails in callbacks, so optimization to reduce code footprint by using "this" instead of _.Class were removed.
  • TO-DO Write the naming conventions page, and possibly a glossary of terms since I'm using Object/method/property/parameter in the classical OOP sense which may confuse folks coming from 'pretend' oop languages like PHP.
    COMPLETED 17 July 2017

3.0 Beta 3, 3 July 2017 (internal working group only)

I moved all "underscore" methods and objects that do not rely on local variables to outside the self-instancing function where we declare "underscore" in the global scope. This appears to speed up starting time in legacy IE (thanks to @KarmaWulf for pointing out the odd lag in IE7 -- dude, gimme a link, want to credit you on that) and somehow, despite being the same code knocked 200 bytes off the gzipped/minified size.

NOT sure how that works, but I'm going to dig into re-arranging the code to see if I can find other ways to trigger gzip optimizations. I know nesting 'like' code that uses the same variable names often puts them into the same 'blocks' where repeated phrases are more efficient... gah, I'm getting byte-obsessed again; and there's a difference between sane minimalism and pointless obsession.

  • Refactoring Moved all "underscore" objects/methods that don't rely on local variables or functions outside of the self-instancing function. This required rewriting all objects/methods inside the isolated scope to add themselves to the object instead of being part of it. @Tim, you seem good at catching stupid bugs/typos, could you take a look to make sure I didn't make a right mess of that?
  • Refactoring After some thought tweaked all the typeof comparisons to be value first, again seems to gzip smaller.
  • Added Start/end comments to major blocks. Generally I'm not a fan of them in my own scripting since "what's wrong with indents" but I realize that this project isn't just about ME. Much like my distaste for colour syntax highlighting and excess spaces around operators, I can work with it if everyone else finds it easier... just don't expect me to jump up and down for joy about it.
  • FIXED Bug in _.writeToClipboard that was causing IE10 to crash out due to being in "use strict". A number of other problems in terms of left/right hand evaluation orders were found across the code where IE10's version of "use strict" appears to be stricter than any other browser -- INCLUDING IE11 or Edge! Interestingly the problem does not occur in Win 10's IE10 emulation under IE11, but DOES occur in IE10 emulation under Windows 8.1 and of course, REAL IE10 in a VM. 😏
  • TO-DO More rigourous testing under REAL IE versions 5.5 through 8.
  • TO-DO Proposed site layout changes for desktop are approved and working, but breaks the media queries for mobile. Have to rethink/redo all the queries.

3.0 Beta 2, 20 June 2017 (internal working group only)

I am HOPING that this release will with minimal changes/fixes become our release candidate for version 3.0. While those of you working on internal testing and commenting run it through the ringer, I'm going to devote probably the next THREE WEEKS MINIMUM to redoing major parts of the website to make the documentation easier to navigate. Likewise all the demo code is starting to age poorly after the conversion from 2.0 to 3.0, so I'm going to set about cleaning that up as well before we go with calling it a release candidate.

Note that when we all write off on it as being suitable for being a release candidate, that will be when version 3 will go public. I took the earlier beta versions public a bit too soon, and called it "verson 2" way too soon as well... live and learn.

This time let's dot those t's and cross those i's first.

  • FIXED Stupid typo in ajax extension getXMLValuesByTagName
  • Refactored Many functions to re-use their parameters internally instead of creating new "variable for nothing", as well as using extra "undocumented" parameters to save on saying "var" unnecessarily in terms of creating local variables. In certain objects like EventAdd this seemed to clear up a problem with some local variables going AWOL in IE8/earlier too so... less code AND bugfix? Win/win!
  • QUESTION What does the working group thing on the idea of adding support for internationalization of language strings though a central object on things like the default _.Throw messages? Part of me thinks it might decrease the codebase size, part of me is worried that might be getting too complex for its own good.
    REJECTED 24 June, 2017

3.0 Beta 1, 9 June 2017 (internal working group only)

I consider this release to be feature complete, debugging and testing can begin apace.

  • Unified the old internal "log" Object with _.Log -- was no reason for them to be two separate codebases.
  • Moved and extended scroll handling into _.Metrics.Scroll which can pull the internal height/width of an elements contents, uses the elements size to determine the maximum x and y scrolling values, and of course wraps reading the x and y scroll amounts in a cross browser fashion.
  • Modified With the lifting of the raw unminified filesize restriction a major refactoring of all functions was done so that they use more verbose variable names internally. After all any good minification routine will reduce most of them to single letters anyways.
  • Switched from our own internal script minification routine to Google's Closure Compiler. It has a nice REST API for the back-end to leverage when it is update time, and while not as cutthroat on minification as our custom routine was, our in-house one was being rewritten for each and every blasted new build to try and squeeze every last byte out of it... and while I'm all about minimalism in my code, there's that line where it turns into an unhealthy byte obsession.
  • Added captureLevel property to _.Event.add and now am using the EventAdd internal callback for event handling (previously called IEEvent) to implement it in modern browsers as well. This means you can 'prevent' the object from bubbling by passing 'true' or '1', and propagating (returnValue, preventDefault, stopPropagation) by passing '2'. False/null/0 of course is the same as passing false to addEventListener.
  • Renamed _.Node.add to _.Node.write which seemed more appropriate given that the function now handles insertion at the beginning and end of an elements contents, before or after an element, or even replacing the element or its contents.

3.0 Alpha 2, 20 April 2017 (internal working group only)

The rework of the code has freed up a lot of space once everything is gzipped. To that end I'm lifting the size restrictions for the raw/non-minifed version of the program AND the minified. Really the only two numbers that should matter anyways are the gzipped sizes of both normal and minified, which will now be set to 12k and 8k respectively. If any new functionality, features, or non-essential changes will make the gzipped version of the code exceed 12k, or the minified gzipped exceed 8k, such changes will [b]NOT[/b] be accepted into the codebase!

This newfound space has been used to add the following:

  • Added _.Cookies Object containing easy methods for cookie manipulation. This was a pretty big gap in functionality given any library/framework worth its salt should have this.
  • Added _.EMPTY_TAGS and _.NON_CONTENT_TAGS "constants" to aid in error checking/validation of passing certain element types to certain methods/functions. I also personally just find it handy to have them readily available.
  • Added _.Metrics Object to make figuring out where and how elements are sized a bit easier.
  • To-Do Move scrolling routines into _.Metrics --- possibly as methods of a sub-object? Opinions?
    Completed 3.0 Beta 1, 9 June 2017
  • Added _.Select Object to make clipboard selection more versatile.
  • Added _.writeToClipboard method for cross-browser pasting to the clipboard of any string/variable you want. Not supported in all browsers as I didn't think adding a flash fallback was appropriate. REALISTICALLY any modern browser and even most versions of IE should work without that now.
  • Moved _.BROWSER_PREFIXES from being a local variable hidden from users to client-facing. It's useful enough that if we're gonna have it in the codebase, might as well let people have it.

3.0 Alpha 1, 12 April 2017 (internal working group only)

Project was put on the back-burner breaking the planned release schedule since full time paying job comes before side projects like this one. Working on the paying job and listening to feedback from those of you brave enough to try this has made me consider radical changes to how elementals works and is laid out.

After much deliberation and re-writing the documentation I came to the conclusion that re-organizing the functionality into further sub-objects inside the "underscore" element would ease in maintaining the documentation, organizing the code, and creating a more 'navigable' website for the project. I think the result is overall clearer though it completely breaks 2.0/earlier support.

To that end, too many changes to document as it's a mostly new codebase.

2.0 RC 3, 14 March 2017

Due the relatively small changes and additions, this version is NOT pushing the planned production release of 25 March 2017 ahead any.

  • Added "replace" type to _.nodeAdd and any associated functions that rely upon it such as _.make
  • FIXED bug in JSON.serialize polyfill. Pretty much a stupid typo.
  • FIXED bug in x.getXMLValuesByName -- another minor typo.
  • Optimized _.nodeAddSelectButton by removing some redundant logic.
  • Optimized _.make reduced code size by re-arranging order of trapping special functions/handling in attribute object.

2.0 RC 2, 4 March 2017

Was not originally planning on a RC2, but suggestions from the peanut gallery prompted the addition of some new features and one pretty big change in behavior.

  • Added Several new simple methods for determining scrolling information about a page. Specifically:

    1. _.scrollMaxX
    2. _.scrollMaxY
    3. _.scrollX
    4. _.scrollY
  • Added Some new String methods.

    1. String.pad
    2. String.strFrom
  • FIXED Bug where cross-browser auto-fix for internally prefixed object methods was missing from codebase. I thought things felt a bit lightweight. Required for:
  • Added Polyfills for performance.now, Window.requestAnimationFrame, and Window.cancelAnimationFrame. I used a varient of the ones Erik Möller put up over on "My Opera" a few years ago, that now seems to have gone AWOL since, well... "My Opera" went the way of the dodo. Mine differes in that I have an internal function in place to check and replace for browser prefixed versions already, I have a wee bit different a way of iterating arrays I know the contents of, I polyfill performance.now so that's used for the timer, I set 16.666667 instead of a flat 16 for the timer interval to be closer to the common 60fps, and I directly copy Window.clearTimeout to Window.cancelAnimationFrame as there is no legitimate reason to wrap that since, well duh, an instance of Window is an instance of Window. It should also start up way faster than his since it does not just blindly assign values to Window to then check.
  • Added eSmooth.js sub-library to site and downloadable distro.
  • Revised _.queryAll will now return an empty array on ALL matches. This makes it easier to use Array.forEach on it without YOU having to hard code a return check.

These changes push the move from "Release Candidate" to "Production" ahead to 25 March 2017.

2.0 RC 1, 25 Februrary 2017

  • FIXED Spelling error in _.throwRange
  • FIXED Array.of added directly instead of by Array.prototype.of
  • FIXED String.repeat FINALLY working as it should.
  • FIXED _.queryAll now returns array in ALL browsers. Had to brute force it since apparently IE8 does support Element.querySelectorAll, but does NOT support Array.prototype.slice.call on a NodeList. DERP... no, seriously, what the hell? TEMPTED to polyfill Array.prototype.slice but is it worth the code for such a minor corner case?
  • FIXED bug in _.make that was broken by fix to application of 'type' attribute.
    This resulted in:
  • Refactored Internal eAddAttr function folded into _.make and greatly simplified. Originally had it recursive for support of objects inside objects, but data- attributes may have objects passed to them. The only object that "needs" to be parse is Element.style so I just special cased that one. Switched 'type' to a special case as well and reorganized the parsing order. New routine tested at five to fifteen percent faster depending on browser, seems more reliable, and is less code to boot!
  • Changed normalized some of the polyfills to be more consistent with the specification behaviors.

2.0 Beta 10, 24 Februrary 2017

  • Revised The three _.callbackArray methods have been moved to be extensions to Array instead. They are now:

    1. Array.callbackAnd
    2. Array.callbackAndAll
    3. Array.callbackOr
    This made more sense given what they do and how they do it. It also shaved a wee bit off the codebase size.
  • FIXED Documentation for _.scriptAdd outdated. Was still written as if the second parameter was the boolean async and not an object containing attributes to be added to the generated SCRIPT tag.
  • FIXED Bug in Array.callbackOr that would have prevented it from doing more than one true answer. DOH. Or should be inclusive like Array.callbackAndAll
  • FIXED Bugs in _.nodeCountAll and _.nodeCountChildren where parameters passed to _.nodeEachAll and _.nodeEachChild were reversed.
  • Bug Misspelt "Infinity" in _.throwRange
    FIXED 2.0 RC 1, 25 February 2017
  • Bug Array.of cannot be added via Prototype, must be direct.
    FIXED 2.0 RC 1, 25 February 2017
  • Bug CHRISTMAS ON A CRACKER!!! String.repeat STILL bugged!!
    FIXED 2.0 RC 1, 25 February 2017
  • Bug attr.style broken on _.make after fix for IE type="" attribute
    FIXED 2.0 RC 1, 25 February 2017
  • Issue _.queryAll on modern browsers returns a nodelist, but the legacy polyfill returns an Array. Question is, which is more useful? With the enhanced Array methods of ECMAScript 5/newer perhaps the Array would be the better choice?
    Resolved 2.0 RC1, 25 February 2017 -- forcing modern browsers to return Array

2.0 Beta 9, 23 February 2017

  • FIXED typos in _.nodeAddSelectButton
  • FIXED missing () in _.nodeSelect IE compatibility.
  • Refactored _.nodeSelect so that only the browser specific version needed is in fact used during runtime.
  • FIXED _.formSerialize handling of empty form elements.
  • FIXED _.formSerialize so it will use the text content of an OPTION tag as value if no value is specified, as per the HTML behavior of a form submit.
  • Bug Array.callbackOr Not iterating all results?!?
    FIXED 2.0 Beta 10, 24 February 2017
  • Bug _.nodeCountAll and _.nodeCountChildren parameters passed to _.nodeEachAll and _.nodeEachChild are reversed.
    FIXED 2.0 Beta 10, 24 February 2017

2.0 Beta 8, 21 February 2017

  • FIXED missing internal escFunc
  • FIXED Logic flow issue in String.repeat polyfill. Excellent example BTW of what pisses me off about C syntax and just how far away from how Assembly works every single language based on it is. ZERO way to check flags AFTER a shift operation, and no concept of a rotate... It's sad when certain tasks are actually simpler to code in machine language.
  • Bug typos preventing _.nodeAddSelectButton from working.
    FIXED 2.0 Beta 9, 23 February 2017
  • Bug _.nodeSelect not calling getRangeSelect as method.
    FIXED 2.0 Beta 9, 23 February 2017
  • Bug _.formSerialize passing empty form elements.
    FIXED 2.0 Beta 9, 23 February 2017
  • Bug When HTML encounters an OPTION tag that has no value, it will pass the content of that tag as the value server side during normal form handling. It appears that Element.value is NOT populated by any browser if the value is not explicitly stated, meaning that default behavior was not implemented in _.formSerialize.
    FIXED 2.0 Beta 9, 23 February 2017

2.0 Beta 7, 19 February 2017

  • Internal Using own minifier as most existing ones seem to choke on certain aspects of how Elementals works. Will have to test in detail this minifier just to be sure it's not screwing things up beyond repair. Customizeed specifically for elementals so most likely it would be highly inefficient for any other codebase.
  • Optimize Used shorter single letter parameters in codebase, but did so in a consistent manner. If you want to know the full name of the variable when browsing the code, refer to the corresponding reference page.
  • Website Added distro package to downloads containing the most recent versions of elementals.js, elementals.min.js, and the various live demos.
  • Website Added stats tracking to home page to keep track of the various sizes and bandwidth elementals.js uses depending on what version is used and how you serve it.
  • FIXED Stupid "bug" where _.log(msg, 'alert'); wouldn't function in some browsers because of how jacktarded JavaScript's use of scope is when using literal notation on an object. Thanks to Goos over on codingforums for pointing out that issue and the Array.reduce flaws that were fixed in beta 6.
  • To-Do Hey, where the blazes did the license agreement go?!? I can't even find the bloody file! Hoping it didn't go awol and I end up having to rewrite that from scratch, even if it is my stock "to blazes with open sores, if you're gonna give something away give it away" rant.
    FIXED interim site update
  • Bug Failed to port escFunc, so JSON polyfill broken in legacy IE.
    FIXED Beta 8, 21 February 2017
  • Bug String.repeat polyfill has nonsensical binary logic... no internal check of value shifted off the count.
    FIXED Beta 8, 21 February 2017

2.0 Beta 6, 18 February 2017

  • FIXED bug in Array.reduce and Array.reduceRight
  • Documented _.uSortRestore
  • Added more transparent handling of event callbacks, resulting in:
  • removed _.eventProcess as pointless redundancy.
  • To-Do Document changes to demo documentation due to removal of _.eventProcess
    Documented interim site update

2.0 Beta 5, 17 February 2017

  • FIXED bugs in _.uSortElement
  • Added _.uSortRestore function to return list to original window load state.
  • Modified large sections of the codebase. Some size optimizations, a good deal of speed optimizations such as making frequently called callbacks static instead of having them as anonymous functions.Even with the added functionality, the overall codesize has not grown significantly since Beta 4.
  • To-Do DOCUMENT _.uSortRestore and add functionality to the demos.
    Documented Beta 6, 18 February 2017
  • BUG Array.reduce and Array.reduceRight written for numeric processing only, should be able to handle strings.
    FIXED Beta 6, 18 February 2017

2.0 Beta 4, 17 February 2017

  • FIXED Legacy IE bug regarding direct assignment vs. Element.setAttribute. Created new internal objAttrSet function to handle correct passing of object parameters (such as style) to attributes whilst still passing 'nodePlacements' and 'content' type 'extraNodes'. Debating on if function should be exposed interface-side.
  • Website made changeLog its own page, it's big enough now!
  • Bug _.uSortElement utterly banjaxed.
    FIXED 2.0 Beta 5

2.0 Beta 3, 16 February 2017

  • FIXED bugs in onprogress handling and various other small quirks in the _.ajax handler.
  • FIXED bug in _.make that resulted in trying to set Element.onclick fail to function. Apparently you can't set an anonymous function using Element.setAttribute. I didn't know that!
  • Documented _.nodeData
  • Bug Legacy IE will not set unknown 'type' on input using direct assignment, must use setAttribute. IE will not set functions on Element without direct assignment! Gonna have to trap BOTH to use the correct method.
    FIXED 2.0 Beta 4.

2.0 Beta 2, 12 February 2017

  • FIXED numerous typo's
  • FIXED _.nodeNext was still written to old Element extension model from 1.0, making it non-functional. Odd that _.nodePrev was correct given they're pretty much the same thing.
  • FIXED _.classToggle wasn't returning boolean true or false, an essential part of its functionality.
  • FIXED _.nodeData function missing, copied from 1.0 and updated to work with new structure
  • Added _.NODEMASK_type constants.
  • To-do _.nodeData documentation.
    Documented in Beta 3

2.0 Beta 1, 10 February 2017

  • First public release after relaunch of project