**Twine 1.4.1** is a maintenance update for Twine 1.4. Here are the fixes: =====Bugfixes===== ====Development program==== * Potentially fixed the Windows VC++ runtime problem. If you haven't installed the VC++ 9 redistributable, the Twine installer should now correctly contain it. * Fixed <> consuming the three characters that come after it. * Fixed external link syntax highlighting. * Fixed syntax highlighting for shorthand <> macros. * Fixed unmatched <> and <> macros not being syntax-highlighted red. * Removed the "Delete Passage" menu item in the Story menu, due to an identical entry being in the Edit menu. * External links and variable links are no longer considered broken links in the IDE. * Fixed annotation passages being drawn too dark in smooth drawing mode. * Fixed the monospace font using the normal font's size instead of its own. * The StorySettings passage is no longer converted to all-lowercase at build time. This should make HTML exporting/importing more symmetrical. * Improved speed of HTML importing. * Fixed an error when trying to replace a passage with one from animported file. * Fixed importing from HTML sometimes failing to read passages correctly. * Now, the "no Start passage" warning is suppressed if a StoryIncludes passage is present. ====Game engine==== * Fixed passages with names containing quote marks being unrecognised by links. * Fixed HTML tables in passages not being constructed correctly. * Altered Sugarcane's browser state-saving to avoid a crash in Firefox caused by having lots of variables in your story. * Fixed TiddlyWiki emdashes not being rendered correctly. * Fixed the <> macro inserting zero-width space characters into contained macro tags, thus breaking them. * Fixed bug preventing custom macros from being usable in StoryMenu etc. * Fixed the [img] syntax used in CSS stylesheets inserting a terminating semicolon, preventing further attributes from being used on the same line. * Added "vertical-align:bottom" to images to compensate for a line-height difference between XHTML Transitional and HTML5. Why is there a line-height difference? The person who can answer that is not on this Earth, but in Heaven. * Fixed the <> macro not working if any text follows it. * Fixed <>. Now, clicking a <> disables all .choice links in the passage, not just itself. This returns it to 1.3.5 behaviour. * Fixed variables used as array indexes not being parsed correctly. * Restored the left positioning of the Sugarcane sidebar. * Added support for "javascript:" and "data:" URIs in external links. * You can now use external links in the simple link syntax, such as %%[[http://example.net]]%%. * Possibly broken pretty-links (as in, links with a separate link text and destination) are now no longer assumed to be external URIs unless they contain a protocol (like "http:"), or the symbols . / \ or #. This should make link debugging a bit easier. * Fixed the shorthand <> macro tag's title sometimes being incorrectly parsed as its first argument. * Shorthand <>: Attempting to access a parameter() that wasn't supplied will no longer throw an error, on the newly considered basis that it would make "variadic passages" (passages that can take multiple optional variables) difficult. * Fixed a bug where backslashes would be incorrectly converted to arbitrary letters if passage obfuscation was being used. * <> now works better when Undo is off in Sugarcane. Previously it would mess up the variable state in cases when link variables were in use. * <> and <> now work when restoring a Jonah state via bookmark. * <> also now works when clicked in a past Jonah passage - previously it would act as if it was in the present passage. * <> now works in the StoryMenu, StoryAuthor, StoryTitle and StorySubtitle passages. * <> now produces an error message if it's used in the StoryMenu, StoryAuthor, StoryTitle and StorySubtitle passage. * Fixed Jonah scrolling in IE 8. * Now, only the StoryTitle passage's text content will be used for the window title, instead of its raw code. * Now, if a story has no StoryTitle, or the StoryTitle has no text content, it will default to the name of the .tws file used to build it, instead of just "Untitled Story". * Fixed a bug where putting "Lookup:" in the StorySettings could potentially crash the game. * Added a sanity check in case a script overrides History.prototype.display() but doesn't pass enough arguments (since in 1.4 it takes 4 arguments instead of 3). * Fixed HTML structures in passages not being rendered correctly. =====Additions===== ====Development program==== * IDE tag colours now vary between shades of orange based on the hash of the tags, to help differentiate dissimilarly tagged passages from a distance. * Added a Preferences option for showing the faint connector arrows for image and stylesheet passages. * Passages displayed via the shorthand <> syntax now result in connector arrows being drawn. ====Game engine==== * The StoryMenu now auto-updates when you change passages!! The code is re-executed and re-rendered into the element. This means you could, say, <> a variable inside it, and it would update automatically. (This change also applies to StoryAuthor, StoryTitle and StorySubtitle). * Added the tags() [[function]], which takes one or more strings and returns an array of the tags of the given passage (or the current passage if no name is supplied). * Added passage(), which simply holds the name of the current passage (If a passage is being <>ed by another, passage() is the name of the "topmost" passage.) * Added turns(), which provides the number of turns that have elapsed in the current game. * Added visitedTag(), which returns the number of times passages with the given tag have been visited. Provide multiple tags to only search for passages that contain both. * Added 'header' and 'footer' elements to Jonah's .passage elements, to provide a bit more symmetry with Sugarcane's DOM layout. * The CSS selector ":link" in stylesheets is now converted to [class*=Link] at runtime. This is to provide backwards-compatibility for people who used "a:link" to refer to Twine links (which is no longer usable as internal links no longer have href attributes). It's a mean sight of a hack, but so be it - I shan't be adding back the "javascript:void(0)" href no matter what you say. * Added the "visitedLink" class, which is applied to passage links that link to already visited passages. ":visited" is converted to ".visitedLink" much like the above. This provides a surprising amount of power - you can give .visitedLink "display:none", for instance, to make links to all visited passages disappear automatically. * Re-implemented <>. It creates an text element which, when a