Skip to content

Releases: boxgaming/qbjs

v0.8.2-beta

02 Feb 23:21
Compare
Choose a tag to compare

Fixes

  • Fix to correctly include pako dependency zip in exported program (#104)
  • Updated OPEN with ability to read files from URLs (#105)
  • Updated to prevent automatically setting the focus to the editor when embedded inside an iframe
  • Updated sleep to exit execution when the script has been stopped

v0.8.1-beta

21 Jan 20:06
Compare
Choose a tag to compare

Fixes

  • Fix to error line reporting for chrome-based browsers
  • Letter spacing fix to QB45 and QB45 VScode themes

0.8.0 Release

20 Jan 14:38
Compare
Choose a tag to compare

Try out the release online here: https://qbjs.org

Release Highlights

Language Support

A major focus of this release was improvements to QB/QB64 language support and compatibilty. This includes many compiler improvements as well as adding support for over 30 additional keywords. Some highlights include:

  • Support for SOUND
  • QB64 string compression: _Deflate$, _Inflate$
  • Support for STATIC variables in functions and subs
  • QB64 keywords can be used with or without leading underscore.

IDE Enhancements

Numerous fixes and enhancements to the IDE were included in this release. There is now a shortcut key for stopping the running application (SHIFT+F5). Files can now be uploaded to the virtual file system via an upload link in addition to the already supported drag and drop method. The largest and most visible change is the inclusion of a new integrated help tab to the console. This includes content directly from the github wiki.

2D Graphics Library

New methods were added to the extended 2d graphics library to apply dashed line style to any line drawing method as well as the ability to draw an inverted rect.

Release Notes

Enhancements

  • Added support for Sound keyword including new optional decay and gain parameters. (#53, #43, #44)
  • Added support for Static variable definitions. (#49)
  • Added support for Shared variable declarations in functions and subs. (#50)
  • Added support for new extended 2D graphics features InvertRect and LineDash(Off). (#99)
  • QB64 keywords can be used with or without leading underscore "_". (#68)
  • Support new QB64 way of defining multiple variables of the same time on a line for custom type declarations (#56)
  • Display flashing prompt when Input command is accepting user input. (#94)
  • Add support for QB64 string compression methods _Deflate$ and _Inflate$. (#74)
  • Text screen scrolling not working with Input after recent font support changes. (#93)
  • Added support for QB64 keyword modifier key functions: _NumLock, _CapsLock, _ScrollLock. (#77)
  • IDE Enhancements
    • Added integrated Help tab (#70)
    • Stopping program execution in the IDE should halt all playing sounds. (#91)
    • New IDE Theme - QB64 VSCode. (#51)
    • Always show Export button on Share dialog. (#87)
    • Implemented shortcut key to stop the running program (SHIFT+F5). (#90)
    • Add upload button to Files tab as an alternative to drag-and-drop. (#86)
    • Automatically set focus to code editor when in IDE mode. (#52)

Fixes

  • Amount of delay by _Limit not consistent between browsers (#55)
  • Render issue with PSet optimizations when changing _Dest image (#80)
  • Various tweaks and improvements to file operations. (#47)
  • Fixed Firefox specific text placement issues (#88)
  • Explicitly convert value when passing floating point values to integer method parameters. (#81)
  • Fixed parser error when IF statement follows a multi-line separator ":". (#79)
  • Fixed parser error for conditional keywords (if, elseif, while, until) with no space between keyword and open parenthesis. (#85)
  • Fixed parser error for subs and functions which contain "." in the name. (#83)
  • Subs with coordinate-style parameters with no space between the method name and first parameter were not correctly being identified as subs by the parser. (#54)
  • IDE Fixes
    • Fixed fullscreen link in exported html. (#96)
    • Reduced size of QBJS logo in exported html (#95)
    • Zip files created when saving or exporting the project were not compressed. (#100)
    • Prevent program from starting multiple times when pressing the run shortcut key (F5). (#89)

Added Keywords

  • QB
    • Environ, Environ$, Error, Loc, Static
  • QB64
    • Arccot, _Arccsc, _Arcsec, _CapsLock, _CommandCount, _Cot, _Csc, _Deflate$, _DesktopHeight, _DesktopWidth, _Dir$, _Echo, _EnvironCount, _Inflate$, _Sec, _MouseHide, _MouseShow, _NumLock, _ScreenMove, _ScreenX, _ScreenY, _ScrollLock, _Title$
  • QBJS
    • G2D.InvertRect, G2D.LineDash, G2D.LineDashOff

v.0.7.3-beta

14 Jun 15:42
Compare
Choose a tag to compare

Minor patch release to address the following issues:

  • Fixed Locate bug introduced by new custom font functionality
  • Fix for src url parameter to correctly handle source urls with parameters
  • Added ability to prefix parameters with "#" instead of "?" to allow for longer code URLs
  • Added detection logic for additional zip file content types: application/zip-compressed, application/x-zip-compressed
  • Fixed screen sizing issue in "auto" and "play" modes
  • Disabled beforeunload event when not in IDE mode (e.g. auto, play)

v0.7.2-beta

03 Jun 20:38
Compare
Choose a tag to compare

Patch release to disable the beforeunload event when in an iframe. This is to prevent the popup from appearing when qbjs is embedded in another site.

v0.7.1-beta

02 Jun 21:37
Compare
Choose a tag to compare

Patch release to resolve issue with array declaration introduced in the 0.7.0 release

v0.7.0-beta

26 May 18:02
Compare
Choose a tag to compare

Release Highlights

IDE Enhancements

Numerous enhancements to the IDE have been incorporated into this release. The code, output and console panels can be resized by dragging the panel dividers. There are now keyboard shortcuts for running the current program (F5) and the export/share feature (F11). Users can now customize the look and feel of the IDE by choosing from one of four themes.

Custom Fonts and Printing

Support has been added to allow the use of custom fonts. The following keywords are now available in support of this feature: _Font, _LoadFont, and _FreeFont. The _PrintMode keyword is also now supported to allow text to be printed with transparent background. Numerous updates have been made to the Print method to format the output more closely to QBasic/QB64.

2D Graphics Library

This release includes a new graphics library which provides native support for common graphics methods (e.g. FillTriangle, RotoZoom, FillCircle, FillEllipse). There is also new functionality to allow more control over both new graphics functions and standard QBasic graphics methods (e.g. LineWidth, LineCap, Shadow). The full list of new methods can be found here:
https://github.com/boxgaming/qbjs/wiki/Supported-Keywords#2d-graphics.

Console Output Library

A new console output library has been added to allow logging messages and simple output to the console window in the IDE. The full list of new methods can be found here:
https://github.com/boxgaming/qbjs/wiki/Supported-Keywords#console

File I/O Extension Library

This library provides the ability to upload and download files to and from the browser from within your application. The full documentation for the library can be found here:
https://github.com/boxgaming/qbjs/wiki/Supported-Keywords#filesystem

Release Notes

Enhancements

  • Add Extended 2D graphics library
  • Add Console output library
  • Add File I/O extension library
    • Support for file listing, upload and download
  • IDE enhancements
    • Support for multiple IDE themes
      • Default (QB64 dark dark blue)
      • QBasic (classic old school look-and-feel)
      • Windows Classic
      • VSCode Dark
    • Run current program when F5 is pressed
    • Show share/export dialog when F11 is pressed
    • Allow resizing of IDE panels
  • Add support for querying the current foreground and background color
    • _DefaultColor, _BackgroundColor
  • Add support for setting font display behavior
    • _PrintMode
  • Add support for custom fonts
    • _Font, _LoadFont, _FreeFont
  • Add support for mouse scroll wheel (_MouseWheel)

Fixes

  • String$ method not working correctly when character code passed for second parameter
  • Missing _FontHeight method
  • Print method not wrapping text when length would extend past the end of the screen (Issue #34)
  • Print method not prefixing non-negative numbers with space character (Issue #41)
  • Parsing error when negative numbers are used in array definition with (x To y) format
  • Line with and height are off by 1 when using the B or BF option.
    This was preventing anything from being drawn when the height or width of the requested line was 0.
  • Name method not using correct syntax:
    • Expecting: NAME "oldFileName.txt", "newFileName.txt"
    • Should Be: NAME "oldFileName.txt" AS "newFileName.txt"

v0.6.1-beta

21 Nov 19:06
Compare
Choose a tag to compare

Implemented a screen pixel cache to improve performance for programs that heavily utilize PSET for rendering.

v0.6.0-beta

02 Nov 14:07
fb4d246
Compare
Choose a tag to compare

Release Highlights

File I/O Support

Support has been added for standard QBasic file input/output. QBJS now has a virtual file system that supports most file system operations. As part of this update there is now a File tab in the console to manage the virtual file system. Files can be dragged into the currently selected folder and downloaded by clicking the file name.

What is supported so far:

  • INPUT, OUTPUT, APPEND and BINARY file modes

What is NOT supported yet:

  • RANDOM file mode

Project Support

Now more complex projects can be managed and shared in QBJS. There is a new toolbar which allows you to open and save either individual .bas source files or a .zip file containing an entire project. Additionally, you can share publicly published projects with the src parameter. Here are a couple of examples:

Expanded Set of QB/QB64 Keywords

25 new keywords have been included with this release. See the full list below.

Release Notes

Fixes

  • Update Input and Line Input to convert returned values to appropriate type
  • Line statement errors when no color parameter is specified but the subsequent B/BF parameter is
  • Fully support variable type suffixes in function/sub parameters.
  • Fix Line Input error

Enhancements

  • Add support for virtual filesystem to support File I/O methods (APPEND, BINARY, INPUT, OUTPUT)
  • Add support for loading and saving a project from a zip file containing the main source and dependencies stored in the virtual file system
  • Add support for additional QBasic/QB64 Keywords
    • _CWD$
    • _DirExists
    • _FileExists
    • _OS$
    • _StartDir
    • ChDir
    • Close
    • EOF
    • Files
    • FreeFile
    • Get
    • Input (file statement)
    • Kill
    • Line Input (file statement)
    • LOF
    • MkDir
    • Open
    • Print (file statement)
    • Put
    • Name
    • RmDir
    • Seek
    • Write
    • Write (file statement)
    • XOR (bitwise)

v0.5.0-beta

06 Jul 17:21
Compare
Choose a tag to compare
v0.5.0-beta Pre-release
Pre-release

Release Highlights

Data / Read / Restore

Full support has been added for standard QBasic Data operations.

Parsing Updates

This release has a number of improvements to the parser which allow for more flexible formatting. There is now much less reliance on white-space placement for proper parsing of the source code.

Error Reporting

Parsing and runtime errors shown in the console output window are now clickable links which will highlight the corresponding line of code in the editor.

Expanded Set of QB/QB64 Keywords

35 new keywords have been included with this release. See the full list below.

Release Notes

Fixes

  • Function calls prefixed with the negative operator (e.g. -_WIDTH) are not converting properly.
    Workaround: Wrap function call in extra parenthesis (e.g. -(_WIDTH) )
  • Add support for comma-separated Next statements
  • Add support for comma-separated Const declarations
  • Syntax error when optional color parameter is not specified on Line command but B or BF option is
  • Add support for textured lines
  • Add support for screen mode 1
  • QB64 compatibility fix for _Round function
  • QB compatibility fix for Rnd function

Enhancements

  • Add support for Data/Read/Restore
  • Rnd algorithm updated to be compatible with QB/QB64, including support for Randomize
  • Update parser to not be reliant on spacing that is optional in QBasic/QB64 for proper conversion
  • Show runtime errors traced back to line in basic source in console window
  • Add support for additional QBasic/QB64 Keywords
    CDbl, CInt, CLng, CSng, Data, Date$, Let, Randomize, Read, Rem, Restore, _Acos, _Acosh, _Asin, _Asinh, _Atanh, _Ceil, _Coth, _Csch, _D2G, _G2D, _G2R, _Hypot, _PaletteColor, _R2G, _ReadBit, _ResetBit, _Sech, _SetBit, _Shl, _Shr, _StrCmp, _StriCmp, _Tanh, _ToggleBit