Skip to content

Releases: MCJack123/craftos2

CraftOS-PC v2.1

13 Oct 05:13
Compare
Choose a tag to compare

CraftOS-PC's first minor update is here, introducing some new features and many bugfixes.

  • Added 256 color mode
    • This can be activated with term.setGraphicsMode(2)
    • Use numbers 0-255 to choose color instead of colo(u)rs API
    • Colors 0-15 are set to default colors, use term.setPaletteColor([0-255], r, g, b) to set color palette
  • Added auto-updater, allowing one-click installation of new updates (Windows/Mac only)
  • Added custom fonts
    • Set customFontPath to the (real) path to the font (BMP format only)
    • Set customFontScale to the font scale
      • 1 = HD font (12x18), 2 = normal font (6x9), 3 = 2/3 size font (4x6)
  • Fixed graphics issues on Linux with NVIDIA graphics
    • Renderer has been rewritten to fix this
    • Should improve performance when using a reasonable number of windows
      • May degrade performance when using >1000 windows at once on a slow system
  • Added CLI mode
    • This can be activated with the --cli option
    • Not available on Windows (use WSL if necessary)
  • Added more HTTP methods
  • Added fullscreen hotkey (F11)
  • Added romReadOnly config option
  • Added Ubuntu 19.10 & Arch packages
  • Added autoconf script to compile
  • Many bugfixes
    • Fixed compositor disabling on KDE
    • Fixed monitor.setTextScale
    • Fixed term.screenshot
    • Fixed fs.getDrive
    • Fixed window resizing on Linux
    • Fixed many compilation warnings
    • Cleaned up code to be more C++-like

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

Note for macOS Catalina users

macOS Catalina adds a new policy that requires apps to be notarized with a Developer ID. Because I do not have a paid developer account, I cannot notarize Mac builds, and as a result, double-clicking CraftOS-PC for the first time will not work. To resolve this, right-click on the app and click Open. Afterwards, you can double-click the application as normal.

CraftOS-PC v2.0.1

13 Sep 04:50
Compare
Choose a tag to compare

Quick bugfix release.

  • Added automatic update checking
    • Pops up a window alerting the user about the new version
    • Can be disabled with the checkUpdates config option
    • Will be expanded into an auto-updater in v2.1
  • Added term.setPaletteColor(color, hex) syntax
  • Fixed plug-in loading on Mac
  • Fixed computer label always getting reset to true
  • Fixed ignoreHotkeys not being saved

CraftOS-PC v2.0

09 Sep 02:54
Compare
Choose a tag to compare

CraftOS-PC 2 has reached a stable state and is ready for production.

Linux builds are no longer included in the release, please install using the PPA if you are using Ubuntu. See README.md for more information.

Changes since Pre-Release 1:

  • Fixed high CPU usage, now uses ~5% CPU at idle
  • Moved plugin directory on Mac to CraftOS-PC.app/Contents/PlugIns
  • Fixed HTTP requests

Changes since CraftOS-PC v1.2:

  • Rewrote code base in C++
    • Improves performance of emulator
    • Reduces system resource usage (~5% CPU, 8 MB RAM at idle on Windows)
    • No longer truly cross-platform, requires platform-specific binaries
  • Added built-in screenshots
    • Take a screenshot with F2 or call term.screenshot(path)
      • path is a global path outside of CraftOS and is optional
    • Saved to ~/.craftos/screenshots by default
  • Added some configuration variables
    • debug_enable (false): Set to true and reboot to enable debug API (or disable removal)
    • ignoreHotkeys (false): Set to true to disable hotkeys (F2, F3)
    • isColor (true): Toggles whether the computer is an Advanced Computer or Standard Computer
  • Settings are now stored at ~/.craftos/config/*.json
  • Added multi-computer support
    • Computers can be added with periphemu.create(<id>, "computer")
    • Can be added from the shell with attach <id> computer
    • Both forms attach the computer peripheral to the current computer
  • Added modem peripheral
  • Added GIF recording support
    • Press F3 to toggle recording
    • Shows red circle in corner while recording
    • Limited to 15 seconds for performance reasons
    • Saves to ~/.craftos/screenshots/<time>.gif
  • .craftos directory is now created on boot
  • Added some CC: Tweaked features
    • #16 (Add monitor.getTextScale())
    • #24 (Add automatic HTTPS requests)
    • #25 (Add term.nativePaletteColor())
    • #29 (Make os.time() and os.date() case-insensitive)
  • Added switch to auto-run script (--script )
  • Added switch to run headless from the console (--headless) (does not work on Windows build, recompile for the console subsystem to use)
  • Added WebSocket support
    • http.websocket(url) will open a client WebSocket connecting to url
    • http.websocket() will open a server WebSocket that can be connected to
  • Added plugin/module system
    • Add plugins in the <installation directory>/plugins folder (CraftOS-PC.app/Contents/PlugIns on Mac)
    • See DOCUMENTATION.md for more details
  • Added file.seek method
  • Added io library with proper filename redirects
  • Added drive peripheral
    • Use disk.insertDisk(string path) to mount a folder or audio file
    • Use disk.insertDisk(number id) to mount a floppy disk from ~/.craftos/computer/disk/<id>
  • Added a whole bunch of features from CC: Tweaked, making CraftOS-PC mostly compatible with CC:T
  • Added new ROM features

I've also attached the CCEmuX adapter plugin binaries to this release.

If you experience problems with CraftOS-PC, you can file an issue, or you can ping me on the ComputerCraft Discord server.

CraftOS-PC v2.0 Pre-Release 1

26 Aug 03:32
Compare
Choose a tag to compare
Pre-release

It's time. Features have been locked, and debug symbols have been dropped. It's time for a pre-release build! CraftOS-PC 2 now has all of the features I wanted to implement before release. There's still a bit of debugging left to do before it's stable, so keep this in mind and report crashes if found. CraftOS-PC v2.0 is tentatively scheduled to release on September 8th.

Here are the new features since Beta 3:

  • Added WebSocket support
    • http.websocket(url) will open a client WebSocket connecting to url
    • http.websocket() will open a server WebSocket that can be connected to
  • Added plugin/module system
    • Add plugins in the <installation directory>/plugins folder
    • See DOCUMENTATION.md for more details
  • Added file.seek method
  • Added io library with proper filename redirects
  • Added drive peripheral
    • Use disk.insertDisk(string path) to mount a folder or audio file
    • Use disk.insertDisk(number id) to mount a floppy disk from ~/.craftos/computer/disk/<id>
  • Added a whole bunch of features from CC: Tweaked, making CraftOS-PC mostly compatible with CC:T
  • Added new ROM features
  • Moved font into executable (no longer requires craftos.bmp)
  • Redid HTTP client/server code, removing some dependencies (expect bugs)

8/31/19: The Windows installer has been re-released to fix dependency errors.

CraftOS-PC v2.0 Beta 3

20 Aug 07:41
Compare
Choose a tag to compare
Pre-release

CraftOS-PC 2 is getting closer to release, adding some of the final features to be implemented. This will hopefully be the last beta build (next will be release candidate). This release also is the first to fully pass CraftOSTest (in the repo root), indicating full API compatibility.

In this build:

  • Rewrote codebase to pure C++
  • Added multi-computer support
    • Computers can be added with periphemu.create(<id>, "computer")
    • Can be added from the shell with attach <id> computer
    • Both forms attach the computer peripheral to the current computer
  • Added modem peripheral
    • Still WIP, expect some bugs
  • Added GIF recording support
    • Press F3 to toggle recording
    • Shows red circle in corner while recording
    • Limited to 15 seconds for performance reasons
    • Saves to ~/.craftos/screenshots/<time>.gif
  • Added coroutine override to partially solve some problems in #1
  • Moved Windows install directory to 64-bit Program Files
  • .craftos directory is now created on boot
  • Reimplemented fs.find, fixing #4 (fs.find returns {} on Windows)
  • Added some CC: Tweaked features
    • #16 (Add monitor.getTextScale())
    • #24 (Add automatic HTTPS requests)
    • #25 (Add term.nativePaletteColor())
    • #29 (Make os.time() and os.date() case-insensitive)
  • Moved all dynamic libraries into Mac app (fixes dyld errors)
  • Added switch to auto-run script (--script )
  • Added switch to run headless from the console (--headless) (does not work on Windows build, recompile for the console subsystem to use)

CraftOS-PC v2.0 Beta 2

13 Aug 05:19
Compare
Choose a tag to compare
Pre-release

CraftOS-PC 2.0 is now compatible with all CraftOS-PC Classic APIs! This means that all of the features of CraftOS-PC Classic will work on CraftOS-PC 2. Some features were already available in Beta 1, but Beta 2 adds the rest of them:

  • mounter API
  • HTTP server listeners
  • Terminal & monitor resizing
  • Window icons
  • Holding Ctrl-T sends terminate event

These are the rest of the changes in Beta 2:

  • Added built-in screenshots
    • Take a screenshot with F2 or call term.screenshot(path)
      • path is a global path outside of CraftOS and is optional
    • Saved to ~/.craftos/screenshots by default
  • Added some configuration variables
    • debug_enable (false): Set to true and reboot to enable debug API (or disable removal)
    • ignoreHotkeys (false): Set to true to disable hotkeys (F2)
    • isColor (true): Toggles whether the computer is an Advanced Computer or Standard Computer
  • Distributed builds now use the CraftOS-PC ROM instead of the ComputerCraft ROM
  • Moved ~/.craftos/config.json to ~/.craftos/config/global.json
  • Big changes under the hood
    • Switched to software rendering from hardware rendering (see #5)
    • Rearranged a bunch of the code in preparation for multiple computers
    • Changed event queuing system to put parameter threads under a separate state rather than the main state
      • This should a) reduce memory leakage or b) improve event stability

UPDATE: The Windows installer has been updated to include the Visual C++ redistributable and some necessary DLLs that were not included in the original release.

CraftOS-PC v2.0 Beta 1

07 Aug 05:59
Compare
Choose a tag to compare
Pre-release

The CraftOS-PC 2 codebase is now stable enough for a beta release! The API is mostly compatible with the original ComputerCraft API, with the following features ported from CraftOS-PC Classic:

  • config API - adjust ComputerCraft configuration
  • periphemu API - attach peripherals to the computer
    • monitor
    • printer
  • Terminal graphics mode
  • debug API access

Here are the known bugs with this version (shouldn't impair usage of the emulator):

  • #1: Lua C can't yield inside pcalls, causing tracebacks to end at pcalls
  • #3: fs.list("/") does not list "rom"
  • #4: fs.find returns {} on Windows

I plan on adding these features to CraftOS-PC 2 in the future:

  • mounter API - mounts local drives into ComputerCraft (CraftOS-PC Classic)
  • HTTP server (CraftOS-PC Classic)
  • Toggle between normal computer and advanced computer
  • WebSocket support (CC: Tweaked)
  • Native IO library (CC: Tweaked)
  • Multiple computer support (CCEmuX)
  • speaker (CraftOS-PC Classic), modem (CCEmuX) peripherals
  • Pocket computers?