See also the changelogs of the Inform extensions: * https://github.com/vorple/inform6/blob/master/CHANGES * https://github.com/vorple/inform7/blob/master/CHANGES The numbers after the items refer to GitHub issues. (inform #xx) refers to issue number xx in the Inform extensions/libraries repositories. Release 4.1.0 (2022-) ========================== - When evaluating JavaScript code that returns a promise, Vorple now waits until the promise is resolved and passes its return value to Inform - Added vorple.layout.createNewTurnContainer() - Fixed vorple.layout.scrollTo() always scrolling to the top of the page - Interpreter name is now "Vorple" instead of "Quixe" in the web document title Release 4.0.1 (2022-06-26) ========================== - Fixed npm package not working correctly in React/Webpack projects (#57) Release 4.0.0 (2022-05-11) ========================== - Codebase converted to Typescript - In the npm package, the "src" directory now contains the original Typescript source code, "dist" contains the compiled JavaScript code, and "web" contains the interpreter package that used to be in "dist" - Replaced imports from the "path" module to BrowserFS's equivalent to avoid having to include path-browserify when using Vorple as an npm package Release 3.2.8 (2022-04-25) ========================== - Added method vorple.checkVersion() to replace vorple.requireVersion() which is now still included but deprecated and shouldn't be used anymore - Added an optional parameter to vorple.debug.toggle() to set the debug flag to a specific state instead of flipping the current state - Fixed status line being transparent - Fixed vorple.file.info() possibly returning false instead of null in some cases when reading a file failed - Fixed audio queue not respecting the looping flag of upcoming tracks - Fixed vorple.audio.fadeOut() not passing the success boolean to the callback parameter as documented - Fixed a typo in vorple.audio.setPlaylist() parameters documentation (shuffle -> shuffled) Release 3.2.7 (2022-04-11) ========================== - Fixed a bug that prevented saving and restoring games Release 3.2.6 (2022-02-17) ========================== - Fixed the interpreter not loading gblorb files (#49) - Fixed UI blocking with vorple.layout.block() not working in some situations - Added vorple.layout.isBlocked() for checking whether user input is blocked - Updated jQuery to 3.6.0 Release 3.2.5 (2021-02-22) ========================== - Fixed the character code from a keypress not being registered correctly when waiting for a keypress Release 3.2.4 (2021-02-14) ========================== No changes to the JavaScript libraries. See the Inform 7 changelog. Release 3.2.3 (2020-09-03) ========================== - Modified the source file structure so that it's easier to include Vorple in JavaScript projects with npm - The HTML element container for the interpreter can be specified in the options object - Command history API is now accessible through vorple.prompt.history in addition to Haven's haven.prompt.history - Silent or repeating commands are no longer added to the command history - It's no longer necessary to manually specify autosave and engineColors options when initializing Vorple - proxy_url option now defaults to the Parchment proxy (https://zcode.appspot.com/proxy/) - The default loading spinner icon is now "." (full stop) instead of "|" (pipe) if nothing else is specified. The Inform packages still use "V" as their default spinner icon, which can be changed by editing the HTML template. - Fixed a bug that caused Firefox to sometimes scroll the page to the top when clicking links - Fixed a bug that prevented vorple.audio.isEffectPlaying() from detecting currently playing sound effects - Fixed a bug that caused some commands not being saved to the command history - Updated jQuery to 3.5.1 and other libraries to their latest versions Release 3.2.2 (2019-11-19) ========================== This minor release adds compatibility to the new Borogove editor. - Added vorple.file.resourceUrl() method that gets a resource file's correct URL regardless of where the interpreter is running so that they work when running embedded in Borogove Release 3.2.1 (2019-11-17) ========================== This release fixes regression issues after the change of interpreter mainly with games and libraries that rely heavily on Unicode input and output. - Added missing tables in some Glulx-level Unicode functions that caused interpreter crashes (inform6 #26) - Added missing Unicode input methods to the Quixe interpreter interface (inform6 #26) - Fixed Inform 6 story file detection - Fixed sound effect audio elements getting a vorple-music class meant for background music only - Removed obsolete build instructions from the readme Release 3.2 (2019-09-14) ======================== Due to various technical and convenience reasons, this release replaces the Git engine with Quixe for the Glulx interpreter. The overall performance takes a minor hit but JavaScript evaluation time gets about 75% reduction, which has significant impact especially when evaluating several blocks of code consecutively. - BREAKING CHANGE: Sending commands programmatically with vorple.prompt.queueCommand() will no longer clear the prompt automatically, so whatever the player had typed there will be untouched. Clear the prompt manually if necessary with vorple.prompt.setValue(""). (#36) - BREAKING CHANGE: vorple.layout.scrollTo() now returns a promise that resolves when the scroll animation ends, instead of true/false to indicate if scrolling was needed - Added a module to access the virtual filesystem. This allows for exchanging files between JavaScript and the Inform story. - Proper modal prompts when the engine asks for filenames, and restoring a game shows a list of savefiles to choose from - Added input/output filters and event listeners - Added a keypress queue (vorple.prompt.queueKeypress) for programmatically sending a keypress when the Inform story is waiting for one - Turn content is now wrapped in named HTML elements which makes it easier to target specific turn content with JavaScript (class "turn" for each turn, plus classes "current" for the currently happening turn and "previous" for the one that has just ended) - Added vorple.getInformVersion() which returns either 6 or 7 depending on which version compiled the story file. - Fixed a bug that caused the interpreter to not scroll new content into view when Inform paused to wait for a keypress - Fixed a bug that caused the interpreter to not respond to keypresses when Inform was waiting for a keypress and the screen wasn't scrolled all the way to the end - Files passed between Inform 7 and Vorple now include the correct headers. Inform seemed to ignore the header when the project wasn't named in the header so it didn't have any visible negative effects. - If the interpreter's HTML file doesn't contain the required HTML elements, they are now created automatically - vorple.audio.playSound() accepts an id option that will be attached to the created audio element, and the method returns the audio element - vorple.layout.scrollTo() and vorple.layout.scrollToEnd() accept a parameter that tells how fast the scroll animation should be, or 0 for no animation (default 0.5 seconds), and returns a promise that resolves when the animation ends - Added a CSS rule that prevents overflowing of words that are too long to fit inside the interpreter output area - Tweaked the status line CSS to cover the entire width of the output (#30) - Changed the prompt line CSS to calculate the input field's width automatically without having to do it via JS - Set the autocomplete="off" and autocapitalize="none" attributes to the prompt to disable unwanted browser features Project ------- - Replacing the Emscripten-powered Git engine with Quixe, mentioned above, removes the need to compile Git with Emscripten which was not a very user-friendly experience. The project's development environment is now much easier to get up and running. - Updated to latest version of Webdriver.io which greatly simplifies the test setup required. Npm handles all testing software installation. - Added a script to automatically build the unit test game Libraries --------- - Updated jQuery to 3.4.1 and other libraries to their latest versions Release 3.1 (2018-11-03) ======================== - BREAKING CHANGE: JavaScript evaluation no longer writes the implicit value of the last expression to the return value file. Code must explicitly return a value, otherwise the file is left untouched. - For performance reasons the interpreter now writes the type of the evaluated JavaScript expression to a file for Inform to pick up, instead of having the Inform extension deduce the type from the value. - Fixed a bug that prevented a music track from looping if it was started when a previous track was already playing - Added the vorple.audio.pauseBetweenTracks variable to set the duration of the pause between tracks in a playlist - Fixed the return value of debug.off() that was always true but documented to be always false - vorple.requireVersion() returns a boolean that indicates the check status and accepts a callback that will be run after the check instead of the default one that prints an error message - Fixed a bug where versions larger than 9 would pass vorple.requireVersion() check - Compatibility with Internet Explorer 11 - Added default audio options that can be set by the user - Exposed audio.fadeOut() method so that it can be called directly - Fixed a bug where fading out a sound while another sound was in the middle of fading out would stop the other sound's fadeout - Added a parameter for audio.stopMusic that determines the fadeout duration. By extension setting the fadeout duration to 0 stops the music immediately. - When the result of a JavaScript expression can't be JSON-stringified (e.g. it contains a circular reference) the interpreter will no longer throw an error and null is returned instead (#32) - Fixed save/restore (inform7 #4) - Glk errors thrown by the interpreter are shown in the browser console instead of printing them on the screen - Errors thrown by JavaScript code executed in the story file now show the code in the error message (#33) - JavaScript evaluation now uses new Function() instead of eval() which is significantly faster in some browsers - Audio playlist features have been expanded and partially moved from Inform libraries to the JavaScript library - Fixed command history manipulation methods in Haven, which would cause them to manipulate the start of the command history instead of the latest commands Project ------- - The code is updated to use latest JavaScript features (ES6) and the build process is simplified. The JavaScript library is built with Webpack which also handles other build tasks. - Updated the Git engine to compile with the latest version of Emscripten which also drastically reduced the size of the resulting JavaScript file - Automated testing has been rewritten using Webdriver.io and Selenium - Added documentation for how to get development environment for Vorple itself and its tests installed and running - Vorple is published in nmp: https://www.npmjs.com/package/vorple - Added a Code of Conduct to the project Release 3.0 preview (2017-04-29) ================================ Version 3 is a complete rewrite. Instead of Parchment, it's built on top of Git (https://github.com/DavidKinder/Git) and CheapGlk (https://github.com/erkyrath/cheapglk) that have been compiled to JavaScript (https://github.com/vorple/Git and https://github.com/vorple/cheapglk). The frontend uses Haven (https://github.com/vorple/haven). The API has changed completely, so individual changes are not specified here. Version 3 doesn't directly support Undum anymore. With Undum please use version 2.5. Libraries --------- - Replaced the notification/modal library Noty with Toastr and Vex - Replaced the tooltip library qTip2 with PowerTip - Added the Flexboxgrid library - Updated jQuery to 3.1.1 Project ------- - Inform extensions are split into a separate repository, so dual-licensing the entire project isn't necessary anymore: the JavaScript library is now using the MIT license and the Inform 7 extensions use the CC-BY license.