Skip to content

Releases: MCJack123/craftos2

CraftOS-PC Accelerated v2.6.2

31 Oct 23:42
bc068a2
Compare
Choose a tag to compare
Pre-release

Happy Halloween! This release is unfortunately timed because a large number of spooky bugs are no longer present. However, this is also a treat for everyone who was having problems, so don't be tricked by the lack of spookiness.

  • Bumped structure version to 6
    • New fields in Computer:
      • openWebsocketServers
    • New fields in configuration:
      • dropFilePath
    • New fields in PluginFunctions:
      • registerPeripheralFn
  • Added ability to drop files to paste their paths instead of copying the file
    • Enabled using dropFilePath config setting
  • Added single-window mode
    • Displays all computers on the same window
    • Activated with --single flag on CLI
    • Ctrl+Alt+Left/Right (Cmd+Option+L/R on Mac) to switch windows in GUI
  • Added ability to copy screenshots on Linux (X11, Wayland)
  • Added registerPeripheralFn capability to allow passing a function object
    • registerPeripheral is now deprecated
  • Improved WebSocket server functionality
    • Servers can now be properly opened by calling http.websocket with a port argument
    • Multiple clients to the same server now get unique identifiers as userdata values
    • Added websocket_server_closed event to notify when an opened WebSocket server is no longer accepting connections
  • Replaced Windows nightly builds with CI build artifacts
  • CLI mode now uses Unicode characters for non-ASCII characters
    • Drawing characters are approximated using Braille characters; this may not show up well on a real terminal
  • Improved quality of CCEmuX plugin
  • WebSocket text messages are now sent in UTF-8
  • Improved Rednet deduplication efficiency (part of CC:T 1.99.0)
  • cash no longer saves duplicate history entries
  • Deprecated peripheral::update as it was never used
  • Fixed crashing whenever opening a debugger (from crash reports)
  • Fixed a crash when comparing two identical substrings (#218)
  • Fixed a crash caused by force-closing a computer after it's already gone (from crash reports)
  • Fixed a crash in term.drawPixels when passing a negative value (#224)
  • Fixed occasional crashes from get_comp cache duplication (from crash reports)
  • Fixed crashes and incorrect behavior when using string.format with substrings (from crash reports: Creepi)
  • Fixed strings in modem messages not being sent properly on Linux (BytecodeEli)
  • Fixed binary support in WebSocket messages
  • Fixed an issue causing input to stop working in raw mode on Linux
  • Fixed stack overflow when an error handler attempts to yield (from crash reports)
  • Fixed a bug causing old os functions to be exposed (!)
  • Fixed an incorrect error message when concatenating a concatenated string or substring with a value of an invalid type (9551)
  • Fixed an issue with completion for boolean config settings

This is the first release with a delta installer (Windows only). This should speed up updates from v2.6.1 as it doesn't have to download all of the libraries. If you're downloading from GitHub, please do not get the CraftOS-PC-Setup_Delta-v2.6.1.exe installer unless you already have v2.6.1 installed.

If you need help using CraftOS-PC, I'm available on the CraftOS-PC Discord server as @JackMacWindows#9776. Feel free to ping me if you need anything.

CraftOS-PC v2.6.1

31 Aug 22:23
1cca6ab
Compare
Choose a tag to compare

IMPORTANT: Due to the combination of a change in GitHub's hosting API, as well as a bug in v2.6, CraftOS-PC is no longer able to download new updates. Please download the installer for this version manually.

After going off-the-grid for a month, I'm back with a new update to CraftOS-PC. CraftOS-PC v2.6.1 fixes a number of high-priority issues, tweaks a few things, and brings CC:T compatibility to the latest version.

CraftOS-PC 2's second anniversary is fast approaching (September 8). This is really an amazing milestone for me, and watching this little test project grow into a program used by hundreds to thousands of people, including large livestreamers, has been super exciting. When I first started working on CraftOS-PC 2, I thought it would be a project I worked on for maybe a couple of months, and then I'd leave it alone to move on to other things. But I've kept working on it pretty much every week since then, adding hundreds of features and bug fixes over two years. I'm real proud of how far it's come, and I hope you're enjoying using it. Thank you for your support!

  • Bumped CC:T version to 1.98.2
    • Add motd for file uploading.
    • Fix settings.define not accepting a nil second argument (SkyTheCodeMaster).
    • Add a missing type check for http.checkURL.
    • Prevent parallel.* from hanging when no arguments are given.
    • Prevent issue in rednet when the message ID is NaN.
    • Fix help program crashing when terminal changes width.
    • Prevent wget crashing when given an invalid URL and no filename.
    • Correctly wrap string within textutils.slowWrite.
  • Bumped structure version to 5
    • New fields in configuration:
      • useWebP
    • New fields in Computer:
      • httpRequestQueue
      • httpRequestQueueMutex
  • Added support for screenshots and recordings in WebP format
    • WebP is an image format that is much smaller than PNG/GIF and supports animation
    • All modern web browsers and OSes support WebP images
      • Unfortunately, Discord does not support WebP recordings at the moment.
    • Recordings can be up to 20x smaller than their GIF counterparts
    • Disabled by default; enable the useWebP config option to use WebP instead of PNG/GIF
  • Added support for delta installers on Windows
    • These are stripped-down versions of the installer that only contain core CraftOS-PC files
    • This reduces the size of data to download when updating
    • Some versions may not have delta installers if libraries need to be updated
  • Added update download progress window on Windows; made progress bar determinate on macOS
  • Implemented limits for HTTP options that were present but non-functional
  • Added automatic shell resizing when opening the keyboard on mobile platforms
    • This can be disabled through the shell.mobile_resize_with_keyboard setting
  • Parameters to events are now copied when standards mode is enabled
  • Opening a file when the maximum file count is reached now creates the file as expected
  • Rewrote websocket.receive function in C to perform better
  • Fixed WebSockets not sending PONG packets, causing sockets to randomly close after a while
  • Fixed crashes when trying to use a WebSocket handle after closing it
  • Fixed a race condition in HTTP requests that caused a crash
  • Fixed a race condition causing crashes when running a task on the main thread
  • Fixed a race condition causing functions (like term.write) to be run on the wrong computer
  • Fixed an issue causing the first frame of GIFs to be darker than the rest of the recording
  • Fixed the close button not working in some cases
  • Fixed fs API allowing illegal characters on Windows
  • Fixed modems not checking if channel numbers are in range
  • Fixed utf8.charpattern not existing
  • Fixed crash error message not appearing in standards mode
  • Fixed os.clock() not resetting on reboot (#215)
  • Fixed crash reporter failing to upload files + some websites failing to connect
  • Fixed duplication of default black/whitelist entries
  • Fixed pairs returning incorrect values after a call hook

If you need help using CraftOS-PC, I'm available on the CraftOS-PC Discord server as @JackMacWindows#9776. Feel free to ping me if you need anything.

CraftOS-PC Accelerated v2.6.1

31 Aug 22:28
d2b7f5f
Compare
Choose a tag to compare
Pre-release

After going off-the-grid for a month, I'm back with a new update to CraftOS-PC. CraftOS-PC v2.6.1 fixes a number of high-priority issues, tweaks a few things, and brings CC:T compatibility to the latest version.

CraftOS-PC 2's second anniversary is fast approaching (September 8). This is really an amazing milestone for me, and watching this little test project grow into a program used by hundreds to thousands of people, including large livestreamers, has been super exciting. When I first started working on CraftOS-PC 2, I thought it would be a project I worked on for maybe a couple of months, and then I'd leave it alone to move on to other things. But I've kept working on it pretty much every week since then, adding hundreds of features and bug fixes over two years. I'm real proud of how far it's come, and I hope you're enjoying using it. Thank you for your support!

  • Bumped CC:T version to 1.98.2
    • Add motd for file uploading.
    • Fix settings.define not accepting a nil second argument (SkyTheCodeMaster).
    • Add a missing type check for http.checkURL.
    • Prevent parallel.* from hanging when no arguments are given.
    • Prevent issue in rednet when the message ID is NaN.
    • Fix help program crashing when terminal changes width.
    • Prevent wget crashing when given an invalid URL and no filename.
    • Correctly wrap string within textutils.slowWrite.
  • Bumped structure version to 5
    • New fields in configuration:
      • useWebP
    • New fields in Computer:
      • httpRequestQueue
      • httpRequestQueueMutex
  • Added support for screenshots and recordings in WebP format
    • WebP is an image format that is much smaller than PNG/GIF and supports animation
    • All modern web browsers and OSes support WebP images
      • Unfortunately, Discord does not support WebP recordings at the moment.
    • Recordings can be up to 20x smaller than their GIF counterparts
    • Disabled by default; enable the useWebP config option to use WebP instead of PNG/GIF
  • Added support for delta installers on Windows
    • These are stripped-down versions of the installer that only contain core CraftOS-PC files
    • This reduces the size of data to download when updating
    • Some versions may not have delta installers if libraries need to be updated
  • Added update download progress window on Windows; made progress bar determinate on macOS
  • Implemented limits for HTTP options that were present but non-functional
  • Added automatic shell resizing when opening the keyboard on mobile platforms
    • This can be disabled through the shell.mobile_resize_with_keyboard setting
  • Parameters to events are now copied when standards mode is enabled
  • Opening a file when the maximum file count is reached now creates the file as expected
  • Rewrote websocket.receive function in C to perform better
  • Fixed WebSockets not sending PONG packets, causing sockets to randomly close after a while
  • Fixed crashes when trying to use a WebSocket handle after closing it
  • Fixed a race condition in HTTP requests that caused a crash
  • Fixed a race condition causing crashes when running a task on the main thread
  • Fixed a race condition causing functions (like term.write) to be run on the wrong computer
  • Fixed an issue causing the first frame of GIFs to be darker than the rest of the recording
  • Fixed the close button not working in some cases
  • Fixed fs API allowing illegal characters on Windows
  • Fixed modems not checking if channel numbers are in range
  • Fixed utf8.charpattern not existing
  • Fixed crash error message not appearing in standards mode
  • Fixed os.clock() not resetting on reboot (#215)
  • Fixed crash reporter failing to upload files + some websites failing to connect
  • Fixed duplication of default black/whitelist entries
  • Fixed pairs returning incorrect values after a call hook

If you need help using CraftOS-PC, I'm available on the CraftOS-PC Discord server as @JackMacWindows#9776. Feel free to ping me if you need anything.

CraftOS-PC v2.6

12 Jul 04:49
cb3e118
Compare
Choose a tag to compare

CraftOS-PC v2.6 brings a huge amount of fixes, as well as some performance improvements that have been dragging things down since v2.0. In addition, it adds support for the new raw mode 1.1 protocol, which includes the ability to transfer files. It's been a while since the last update, so why not make this a special one?

With CraftOS-PC v2.6 comes a new suite of mobile apps, letting you use ComputerCraft on-the-go. Simply download the app on your Android or iOS device, launch the app, and get going. Note: to open the keyboard, pinch inward, and to close it pinch outward. A better way of letting the user know this is in progress.

In the future, the apps will be available on the iOS App Store and the Google Play Store, but until then, you can get the Android app through the APK attached to this release, and you can get the iOS app on TestFlight (requires iOS 13 or later).

  • CraftOS-PC is now available on Android and iOS
    • Apps are available on the iOS App Store (Play Store in the future; please download the APK manually)
    • Supports same feature set as desktop CraftOS-PC
      • Monitors and multi-computer support is missing, but will be added in a future version
    • Pinch in to open keyboard, out to close keyboard
    • Extra mobile-centric features:
      • mobile API with openKeyboard(open: boolean) and isKeyboardOpen() functions
      • _CCPC_mobile_keyboard_open <height> event when keyboard is opened, with an argument for visible height
      • _CCPC_mobile_keyboard_close event when keyboard is closed
  • Bumped CC:T version to 1.97.0
    • 1.96.0:
      • Use lightGrey for folders within the "list" program.
      • Add cc.expect.range (Lupus590).
      • Allow calling cc.expect directly (MCJack123).
      • Fix paintutils.drawLine incorrectly sorting coordinates (lilyzeiset).
      • Correctly handle sparse arrays in cc.pretty.
    • 1.97.0:
      • Add scale subcommand to monitor program (MCJack123).
        • This is a modification of the already-existing resolution subcommand.
      • Add option to make textutils.serialize not write an indent (magiczocker10).
      • Allow comparing vectors using == (fatboychummy).
      • Allow craft program to craft unlimited items (fatboychummy).
      • Add program subcompletion to several programs (Wojbie).
      • Update the help program to accept and (partially) highlight markdown files.
      • Remove config option for the debug API.
        • It still exists internally, but is always set to true.
      • Allow uploading files by dropping them onto a computer.
      • Update the wget to be more resiliant in the face of user-errors.
      • Fix exiting paint typing "e" in the shell.
  • Bumped structure version to 4
    • New fields in PluginFunctions:
      • addEventHook
      • setDistanceProvider
    • New fields in Computer:
      • eventHooks
      • Deprecated fields:
        • nextMouseMove
        • lastMouse
        • mouseMoveDebounceTimer
    • New fields in Terminal:
      • nextMouseMove
      • lastMouse
      • mouseMoveDebounceTimer
    • New types:
      • event_hook
  • Upgraded raw mode protocol to version 1.1
    • New filesystem access ability
    • Computer windows now send the ID of the computer
    • Changed meaning of raw cursor blink field to indicate blinking, not showing
    • Small improvements to the protocol
    • Official protocol specification at https://www.craftos-pc.cc/docs/rawmode
  • Improved performance of string concatenation by using ropes
    • Final concatenation of strings is not completed until the string's value needs to be read
    • This was implemented in CC:T 1.91.0
    • Expect repeated concatenation operations to be around 100x faster
  • Improved performance of string.sub by using efficient substring views
    • Getting a substring no longer has to reallocate the string
    • Instead, it reuses the original string with the offset and length required
  • Added HTTP whitelist & blacklist
    • Emulates configuration of CC:T up until 1.87.0 (before rule-based system)
  • Added command-line option to connect to a remote WebSocket server in raw mode
  • Changed cursor blink speed to 0.4s to match CC's behavior
  • Rewrote main thread task queuer to be more efficient
  • Setting abortTimeout to 0 now disables abort timeouts
  • The close button no longer needs to be clicked twice to exit when keepOpenOnShutdown is enabled
  • Fixed "400 Bad Request" error on HTTP requests when the path is empty
  • Fixed crash when a bad URL is passed to HTTP functions
  • Fixed an issue causing encoded slashes in URLs being decoded prematurely (#199)
  • Fixed some memory leaks in HTTP handles
  • Fixed HTTP not working properly in CraftOS-PC Online
  • Fixed random crashes while sending messages over a modem (#205)
  • Fixed sending recursive tables over modems
  • Fixed old abort timer firing after reboot, causing spurious "Too long without yielding" errors
  • Fixed crash when canceling a timer that doesn't exist
  • Fixed os.epoch "local" not accounting for Daylight Savings Time
  • Fixed files being truncated in text mode on Windows when a \x0A character is found (#204)
  • Software rendering now reuses the same surface to reduce memory pressure
  • Fixed an issue causing inconsistent speeds when recording to GIF
  • Fixed blit only allowing gray colors on grayscale terminals
  • Fixed monitors in raw mode sending close events to the wrong window ID
  • Fixed some issues with setting monitor scale
  • Fixed mouse event debouncing on monitors
  • Fixed monitors not reporting a second monitor_touch event when clicked twice at the same point
  • Fixed mouse_move leave event on monitors not sending the side
  • Fixed a bug causing mouse_move events to stop being sent after a while
  • Fixed behavior of term.blit when passing an invalid character to color strings
  • Fixed raw client mouse events not being sent properly
  • Fixed an issue causing crashes when creating certain peripherals
  • Fixed a possible crash when the BIOS cannot be found (#208)
  • __lt metamethods can now yield from inside table.sort
  • Fixed a possible memory leak in table.sort
  • Fixed an issue causing __lt metamethods that yield to return the wrong result from <=
  • Fixed various errors in yielding from debug hooks
  • Fixed stack not being resized when > 0x08000000 entries are required

If you need help using CraftOS-PC, I'm available on the CraftOS-PC Discord server as @JackMacWindows#9776. Feel free to ping me if you need anything.

The Mac binary has been updated to fix an issue preventing it from working on Apple Silicon Macs. (#212)

CraftOS-PC Accelerated v2.6

12 Jul 05:56
79026c2
Compare
Choose a tag to compare
Pre-release

CraftOS-PC v2.6 brings a huge amount of fixes, as well as some performance improvements that have been dragging things down since v2.0. In addition, it adds support for the new raw mode 1.1 protocol, which includes the ability to transfer files. It's been a while since the last update, so why not make this a special one?

With CraftOS-PC v2.6 comes a new suite of mobile apps, letting you use ComputerCraft on-the-go. Simply download the app on your Android or iOS device, launch the app, and get going. Note: to open the keyboard, pinch inward, and to close it pinch outward. A better way of letting the user know this is in progress.

In the future, the apps will be available on the iOS App Store and the Google Play Store, but until then, you can get the Android app through the APK attached to this release, and you can get the iOS app on TestFlight (requires iOS 13 or later).

  • CraftOS-PC is now available on Android and iOS
    • Apps are available on the iOS App Store (Play Store in the future; please download the APK manually)
    • Supports same feature set as desktop CraftOS-PC
      • Monitors and multi-computer support is missing, but will be added in a future version
    • Pinch in to open keyboard, out to close keyboard
    • Extra mobile-centric features:
      • mobile API with openKeyboard(open: boolean) and isKeyboardOpen() functions
      • _CCPC_mobile_keyboard_open <height> event when keyboard is opened, with an argument for visible height
      • _CCPC_mobile_keyboard_close event when keyboard is closed
  • Bumped CC:T version to 1.97.0
    • 1.96.0:
      • Use lightGrey for folders within the "list" program.
      • Add cc.expect.range (Lupus590).
      • Allow calling cc.expect directly (MCJack123).
      • Fix paintutils.drawLine incorrectly sorting coordinates (lilyzeiset).
      • Correctly handle sparse arrays in cc.pretty.
    • 1.97.0:
      • Add scale subcommand to monitor program (MCJack123).
        • This is a modification of the already-existing resolution subcommand.
      • Add option to make textutils.serialize not write an indent (magiczocker10).
      • Allow comparing vectors using == (fatboychummy).
      • Allow craft program to craft unlimited items (fatboychummy).
      • Add program subcompletion to several programs (Wojbie).
      • Update the help program to accept and (partially) highlight markdown files.
      • Remove config option for the debug API.
        • It still exists internally, but is always set to true.
      • Allow uploading files by dropping them onto a computer.
      • Update the wget to be more resiliant in the face of user-errors.
      • Fix exiting paint typing "e" in the shell.
  • Bumped structure version to 4
    • New fields in PluginFunctions:
      • addEventHook
      • setDistanceProvider
    • New fields in Computer:
      • eventHooks
      • Deprecated fields:
        • nextMouseMove
        • lastMouse
        • mouseMoveDebounceTimer
    • New fields in Terminal:
      • nextMouseMove
      • lastMouse
      • mouseMoveDebounceTimer
    • New types:
      • event_hook
  • Upgraded raw mode protocol to version 1.1
    • New filesystem access ability
    • Computer windows now send the ID of the computer
    • Changed meaning of raw cursor blink field to indicate blinking, not showing
    • Small improvements to the protocol
    • Official protocol specification at https://www.craftos-pc.cc/docs/rawmode
  • Improved performance of string concatenation by using ropes
    • Final concatenation of strings is not completed until the string's value needs to be read
    • This was implemented in CC:T 1.91.0
    • Expect repeated concatenation operations to be around 100x faster
  • Improved performance of string.sub by using efficient substring views
    • Getting a substring no longer has to reallocate the string
    • Instead, it reuses the original string with the offset and length required
  • Added HTTP whitelist & blacklist
    • Emulates configuration of CC:T up until 1.87.0 (before rule-based system)
  • Added command-line option to connect to a remote WebSocket server in raw mode
  • Changed cursor blink speed to 0.4s to match CC's behavior
  • Rewrote main thread task queuer to be more efficient
  • Setting abortTimeout to 0 now disables abort timeouts
  • The close button no longer needs to be clicked twice to exit when keepOpenOnShutdown is enabled
  • Fixed "400 Bad Request" error on HTTP requests when the path is empty
  • Fixed crash when a bad URL is passed to HTTP functions
  • Fixed an issue causing encoded slashes in URLs being decoded prematurely (#199)
  • Fixed some memory leaks in HTTP handles
  • Fixed HTTP not working properly in CraftOS-PC Online
  • Fixed random crashes while sending messages over a modem (#205)
  • Fixed sending recursive tables over modems
  • Fixed old abort timer firing after reboot, causing spurious "Too long without yielding" errors
  • Fixed crash when canceling a timer that doesn't exist
  • Fixed os.epoch "local" not accounting for Daylight Savings Time
  • Fixed files being truncated in text mode on Windows when a \x0A character is found (#204)
  • Software rendering now reuses the same surface to reduce memory pressure
  • Fixed an issue causing inconsistent speeds when recording to GIF
  • Fixed blit only allowing gray colors on grayscale terminals
  • Fixed monitors in raw mode sending close events to the wrong window ID
  • Fixed some issues with setting monitor scale
  • Fixed mouse event debouncing on monitors
  • Fixed monitors not reporting a second monitor_touch event when clicked twice at the same point
  • Fixed mouse_move leave event on monitors not sending the side
  • Fixed a bug causing mouse_move events to stop being sent after a while
  • Fixed behavior of term.blit when passing an invalid character to color strings
  • Fixed raw client mouse events not being sent properly
  • Fixed an issue causing crashes when creating certain peripherals
  • Fixed a possible crash when the BIOS cannot be found (#208)
  • __lt metamethods can now yield from inside table.sort
  • Fixed a possible memory leak in table.sort
  • Fixed an issue causing __lt metamethods that yield to return the wrong result from <=
  • Fixed various errors in yielding from debug hooks
  • Fixed stack not being resized when > 0x08000000 entries are required

If you need help using CraftOS-PC, I'm available on the CraftOS-PC Discord server as @JackMacWindows#9776. Feel free to ping me if you need anything.

CraftOS-PC v2.6 Beta 1

22 Jun 04:18
71e8119
Compare
Choose a tag to compare
Pre-release

CraftOS-PC v2.6 brings a huge amount of fixes, as well as some performance improvements that have been dragging things down since v2.0. In addition, it adds support for the new raw mode 1.1 protocol, which includes the ability to transfer files. It's been a while since the last update, so why not make this a special one?

With CraftOS-PC v2.6 comes a new suite of mobile apps, letting you use ComputerCraft on-the-go. Simply download the app on your Android or iOS device, launch the app, and get going. Note: to open the keyboard, pinch inward, and to close it pinch outward. A better way of letting the user know this is in progress.

In the future, the apps will be available on the iOS App Store and the Google Play Store, but until then, you can get the Android app through the APK attached to this release, and you can get the iOS app on TestFlight (requires iOS 13 or later).

This is a BETA build, and as such has updates disabled. You should install this to a separate directory to avoid overwriting the stable build. On Windows, I recommend using the portable build to keep the installation separate. The main reason for this is that the performance improvements aren't confirmed stable yet, and I need to test how well it works in day-to-day use. Please report any bugs you find (especially crashes) to https://www.craftos-pc.cc/bugreport, and if possible, set snooperEnabled to true to allow crash reports to be sent.

Linux builds will not be available for this release. Please build this version from source if using Linux (or if you use Arch Linux, use the craftos-pc-git AUR package).

  • CraftOS-PC is now available on Android and iOS
    • Apps will be available on the iOS App Store and Google Play Store
    • Supports same feature set as desktop CraftOS-PC
    • Pinch in to open keyboard, out to close keyboard
    • Extra mobile-centric features:
      • mobile API with openKeyboard(open: boolean) and isKeyboardOpen() functions
      • _CCPC_mobile_keyboard_open <height> event when keyboard is opened, with an argument for visible height
      • _CCPC_mobile_keyboard_close event when keyboard is closed
  • Bumped CC:T version to 1.96.0
    • Use lightGrey for folders within the "list" program.
    • Add cc.expect.range (Lupus590).
    • Allow calling cc.expect directly (MCJack123).
    • Fix paintutils.drawLine incorrectly sorting coordinates (lilyzeiset).
    • Correctly handle sparse arrays in cc.pretty.
  • Bumped structure version to 4
    • New fields in PluginFunctions:
      • addEventHook
      • setDistanceProvider
    • New fields in Computer:
      • eventHooks
      • rawFileStack
      • rawFileStackMutex
      • Deprecated fields:
        • nextMouseMove
        • lastMouse
        • mouseMoveDebounceTimer
    • New fields in Terminal:
      • nextMouseMove
      • lastMouse
      • mouseMoveDebounceTimer
    • New types:
      • event_hook
  • Upgraded raw mode protocol to version 1.1
    • New filesystem access ability
    • Computer windows now send the ID of the computer
    • Changed meaning of raw cursor blink field to indicate blinking, not showing
    • Small improvements to the protocol
    • Official protocol specification at https://www.craftos-pc.cc/docs/rawmode
  • Improved performance of string concatenation by using ropes
    • Final concatenation of strings is not completed until the string's value needs to be read
    • This was implemented in CC:T 1.91.0
    • Expect repeated concatenation operations to be around 100x faster
  • Improved performance of string.sub by using efficient substring views
    • Getting a substring no longer has to reallocate the string
    • Instead, it reuses the original string with the offset and length required
  • Added HTTP whitelist & blacklist
    • Emulates configuration of CC:T up until 1.87.0 (before rule-based system)
  • Added command-line option to connect to a remote WebSocket server in raw mode
  • Changed cursor blink speed to 0.4s to match CC's behavior
  • Rewrote main thread task queuer to be more efficient
  • Fixed "400 Bad Request" error on HTTP requests when the path is empty
  • Fixed crash when a bad URL is passed to HTTP functions
  • Fixed an issue causing encoded slashes in URLs being decoded prematurely (#199)
  • Fixed some memory leaks in HTTP handles
  • Fixed random crashes while sending messages over a modem (#205)
  • Fixed sending recursive tables over modems
  • Fixed old abort timer firing after reboot, causing spurious "Too long without yielding" errors
  • Fixed crash when canceling a timer that doesn't exist
  • Fixed os.epoch "local" not accounting for Daylight Savings Time
  • Fixed files being truncated in text mode on Windows when a \x0A character is found (#204)
  • Software rendering now reuses the same surface to reduce memory pressure
  • Fixed blit only allowing gray colors on grayscale terminals
  • Fixed monitors in raw mode sending close events to the wrong window ID
  • Fixed some issues with setting monitor scale
  • Fixed mouse event debouncing on monitors
  • Fixed monitors not reporting a second monitor_touch event when clicked twice at the same point
  • Fixed mouse_move leave event on monitors not sending the side
  • Fixed behavior of term.blit when passing an invalid character to color strings
  • Fixed raw client mouse events not being sent properly
  • Fixed an issue causing crashes when creating certain peripherals
  • __lt metamethods can now yield from inside table.sort
  • Fixed a possible memory leak in table.sort
  • Fixed an issue causing __lt metamethods that yield to return the wrong result from <=
  • Fixed various errors in yielding from debug hooks
  • Fixed stack not being resized when > 0x08000000 entries are required

Known issues:

  • Updates are disabled in this version due to being a beta. This is one reason why you should not replace your main installation.
  • Plugins are not loaded in this version.
  • Sometimes, random crashes may occur when calling certain functions (in particular, os.startTimer has been known to do this).

If you need help using CraftOS-PC, I'm available on the CraftOS-PC Discord server as @JackMacWindows#9776. Feel free to ping me if you need anything.

CraftOS-PC v2.5.5

17 Apr 19:44
b056973
Compare
Choose a tag to compare

CraftOS-PC v2.5.5 is a relatively small update, but it brings some important fixes as well as a huge performance boost in most circumstances.

  • Disabled locks when modems aren't attached
    • This can improve speeds by up to 50%
    • If any modem is attached, speeds will drop back to pre-v2.5.5 levels
  • Rewrote HTTP handle read functions to improve reliability
  • Removed Origin header from WebSocket requests
  • Fixed behavior of table length to work more like CC:T
  • Fixed paste contents not being cut at the first newline
  • Fixed memory leak in file.readAll in binary mode
  • Fixed incorrect modulo result when {(a < 0 | b < 0) & |a| % |b| = 0}
  • Fixed hard crash on startup when a custom font file doesn't exist
  • Fixed crash when passing non-string in header table
  • Fixed crash when halting computer after it already closed
  • Fixed crash when an exception occurs while closing WebSocket in the middle of catching another exception
  • Possibly fixed a crash happening when connecting to a WebSocket
  • Readded Lua features that were advertised in v2.5.4 but not actually present on Windows
    • Added debug.upvalue{id,join} from Lua 5.3
    • Fixed a race conditions with modems causing a crash
    • Fixed some random crashes on an odd memory error
    • Fixed crash when passing bad argument #1 to table.foreach
  • Windows: Replaced old link in System32 behavior with properly adding the install directory to the PATH

If you need help using CraftOS-PC, I'm available on the CraftOS-PC Discord server as @JackMacWindows#9776. Feel free to ping me if you need anything.

CraftOS-PC Accelerated v2.5.5

17 Apr 19:44
27e2e19
Compare
Choose a tag to compare
Pre-release

CraftOS-PC v2.5.5 is a relatively small update, but it brings some important fixes as well as a huge performance boost in most circumstances.

  • Disabled locks when modems aren't attached
    • This can improve speeds by up to 50%
    • If any modem is attached, speeds will drop back to pre-v2.5.5 levels
  • Rewrote HTTP handle read functions to improve reliability
  • Removed Origin header from WebSocket requests
  • Fixed behavior of table length to work more like CC:T
  • Fixed paste contents not being cut at the first newline
  • Fixed memory leak in file.readAll in binary mode
  • Fixed incorrect modulo result when {(a < 0 | b < 0) & |a| % |b| = 0}
  • Fixed hard crash on startup when a custom font file doesn't exist
  • Fixed crash when passing non-string in header table
  • Fixed crash when halting computer after it already closed
  • Fixed crash when an exception occurs while closing WebSocket in the middle of catching another exception
  • Possibly fixed a crash happening when connecting to a WebSocket
  • Readded Lua features that were advertised in v2.5.4 but not actually present on Windows
    • Added debug.upvalue{id,join} from Lua 5.3
    • Fixed a race conditions with modems causing a crash
    • Fixed some random crashes on an odd memory error
    • Fixed crash when passing bad argument #1 to table.foreach
  • Windows: Replaced old link in System32 behavior with properly adding the install directory to the PATH

If you need help using CraftOS-PC, I'm available on the CraftOS-PC Discord server as @JackMacWindows#9776. Feel free to ping me if you need anything.

CraftOS-PC v2.5.4

27 Mar 17:16
23d8984
Compare
Choose a tag to compare

Reminder: If you are using CraftOS-PC v2.5.2 (or very early versions of v2.5.3), you will have to install the update manually.

Even though development has been slowing down, CraftOS-PC v2.5.4 brings many bug fixes as well as compatibility with CC: Tweaked 1.95.3.

  • Bumped CC:T version to 1.95.3
    • Correctly serialise sparse arrays into JSON (livegamer999)
    • Programs run via edit are now a little better behaved (Wojbie)
    • Add User-Agent [and Accept-Charset] to a websocket's headers.
  • Bumped structure version to 3
    • New fields in configuration:
      • keepOpenOnShutdown
    • New fields in computer_configuration:
      • computerWidth
      • `computerHeight
    • New fields in PluginFunctions:
      • attachPeripheral
      • detachPeripheral
  • Added keepOpenOnShutdown setting to keep computers open after shutdown
    • Use the X button to close the window (or your OS's respective key combo)
    • Use Ctrl+R to start the computer again
  • Added per-computer default size options
  • Added two arguments when attaching monitors to specify their size
  • Added debug.upvalue{id,join} from Lua 5.3
  • Added the ability to set host ports for WebSocket servers
  • Added support for KMSDRM backends on Linux
  • Disabled WebSocket servers in vanilla mode
  • Adding duplicate virtual mounts now returns false without adding it again
  • Moved romReadOnly to hidden options
  • Fixed macOS installation instructions for Homebrew
  • Fixed a race conditions with modems causing a crash
  • Fixed abort timeout occasionally firing when running in a quickly yielding loop
  • Fixed WebSockets not being closed soon after close is called
  • Fixed race condition on timer add/remove
  • Fixed some random crashes on an odd memory error
  • Fixed WebSocket binary messages not being implemented correctly
  • Fixed cursor not being reset on shutdown
  • Fixed URL checks being missing from http.get
  • Fixed read past EOF in file.read(n) on text handles
  • Fixed crash when passing bad table argument to table.foreach
  • Fixed arg table being missing when running programs with cash
  • Fixed missing http.listen function
  • Fixed window.getSize not working with the new arguments
  • Fixed cash being enabled by default
  • Fixed shell failing to run in vanilla mode
  • LuaJIT: Fixed error when using invalid escape codes in a string

If you need help using CraftOS-PC, I'm available on the CraftOS-PC Discord server as @JackMacWindows#9776. Feel free to ping me if you need anything.

UPDATE: It turns out the updated Lua library wasn't added to the installer, so changes that involve changes to Lua are not actually present. These are now crossed out, and will reappear in v2.5.5, which will be released soon.

CraftOS-PC Accelerated v2.5.4

27 Mar 17:19
b530b5e
Compare
Choose a tag to compare
Pre-release

Even though development has been slowing down, CraftOS-PC v2.5.4 brings many bug fixes as well as compatibility with CC: Tweaked 1.95.3.

  • Bumped CC:T version to 1.95.3
    • Correctly serialise sparse arrays into JSON (livegamer999)
    • Programs run via edit are now a little better behaved (Wojbie)
    • Add User-Agent [and Accept-Charset] to a websocket's headers.
  • Bumped structure version to 3
    • New fields in configuration:
      • keepOpenOnShutdown
    • New fields in computer_configuration:
      • computerWidth
      • `computerHeight
    • New fields in PluginFunctions:
      • attachPeripheral
      • detachPeripheral
  • Added keepOpenOnShutdown setting to keep computers open after shutdown
    • Use the X button to close the window (or your OS's respective key combo)
    • Use Ctrl+R to start the computer again
  • Added per-computer default size options
  • Added two arguments when attaching monitors to specify their size
  • Added debug.upvalue{id,join} from Lua 5.3
  • Added the ability to set host ports for WebSocket servers
  • Added support for KMSDRM backends on Linux
  • Disabled WebSocket servers in vanilla mode
  • Adding duplicate virtual mounts now returns false without adding it again
  • Moved romReadOnly to hidden options
  • Fixed macOS installation instructions for Homebrew
  • Fixed a race conditions with modems causing a crash
  • Fixed abort timeout occasionally firing when running in a quickly yielding loop
  • Fixed WebSockets not being closed soon after close is called
  • Fixed race condition on timer add/remove
  • Fixed some random crashes on an odd memory error
  • Fixed WebSocket binary messages not being implemented correctly
  • Fixed cursor not being reset on shutdown
  • Fixed URL checks being missing from http.get
  • Fixed read past EOF in file.read(n) on text handles
  • Fixed crash when passing bad argument #1 to table.foreach
  • Fixed arg table being missing when running programs with cash
  • Fixed missing http.listen function
  • Fixed window.getSize not working with the new arguments
  • Fixed cash being enabled by default
  • Fixed shell failing to run in vanilla mode
  • LuaJIT: Fixed error when using invalid escape codes in a string

If you need help using CraftOS-PC, I'm available on the CraftOS-PC Discord server as @JackMacWindows#9776. Feel free to ping me if you need anything.