**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 <<endnobr>> consuming the three characters that come after it.
  * Fixed external link syntax highlighting.
  * Fixed syntax highlighting for shorthand <<print>> macros.
  * Fixed unmatched <<endif>> and <<endsilently>> 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 <<nobr>> 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 <<nobr>> macro not working if any text follows it.
  * Fixed <<choice>>. Now, clicking a <<choice>> 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 <<display>> macro tag's title sometimes being incorrectly parsed as its first argument.
  * Shorthand <<display>>: 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.
  * <<back>> 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.
  * <<back>> and <<return>> now work when restoring a Jonah state via bookmark.
  * <<back>> also now works when clicked in a past Jonah passage - previously it would act as if it was in the present passage.
  * <<back>> now works in the StoryMenu, StoryAuthor, StoryTitle and StorySubtitle passages.
  * <<choice>> 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 <table> 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 <<display>> 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, <<print>> 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 <<display>>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 <<textinput>>. It creates an <input> text element which, when a <button> element is pressed, sets the variable to its string contents. It may also have an additional parameter, a link expressed in link syntax, which is used to create a <button> next to it. Examples: %%<<textinput $name>>%%, %%<<textinput $name [[Submit|Next passage]]>>%%.
  * The previous 1.3.6 <<textinput>> behaviour of triggering the passage change via pressing the Enter key has been removed for now.
  * Added <<radio>>. Its arguments are a variable, and a number of strings for each option. When a <button> is pressed, the label of the selected radio button is put into the variable. Example: %%<<radio $feel "Strongly agree" "Strongly disagree">>%%. If you have multiple <<radio>> macros that refer to the same variable, they're treated as part of the same set.
  * Added <<checkbox>>. It's similar to <<radio>>, having identical syntax - but it sets the variable to an array value containing all of the checked boxes' labels as strings. Example: %%<<checkbox $weapons "Pistol" "Newspaper" "Letter opener">>%%.
  * Added <<button>>, a macro that takes a link as its argument and creates a <button> element. Use it for passages which use <<radio>> or <<checkbox>>, or a <<textinput>> set. Example: %%<<button [[Let's go!|armoury]]>>%%
  * As a counterpart to the alert() raised when a script fails to load, window.onerror is now set to issue a one-time alert() signifying that a Javascript error has occurred during play. Feel free to contact me or use the [[http://twinery.org/forum/|forum]] if you find the message mystifying.
  * StoryMenu now honours the 'nobr' passage tag.
  * Built HTML files are now timestamped.
  * Upgraded the built-in jQuery module to version 1.11.
  * Changed Responsive's footer to a sticky footer, like God and all His hideous bat-faced angels originally intended.
  * Altered Responsive's CSS to make the body background easier to change.
  * Altered the CSS for all targets to make StoryMenu contents display better.
  * Individual script or stylesheet passages may request the inclusion of jQuery or Modernizr, overriding the StorySettings options, by including in their code the case-insensitive string "requires jQuery" or "requires Modernizr". This enables jQuery-using scripts or Modernizr-using CSS to be easily pasted into stories without requiring any other modifications to the story.