Changelog of @hackage/swarm 0.3.0.1

Revision history for swarm

0.3.0.1 - 2023-02-01

A few critical bug fixes and improvements:

  • Make sure the base always has a logger installed in every tutorial level, by @byorgey in #1067 and @xsebek in #1073
  • Allow dialog boxes to scroll by @byorgey in #1071
  • Fix bug that sometimes caused scenarios to be skipped or repeated by @byorgey in #1065

0.3.0.0 - 2023-01-30

This is the first release of 2023! It contains:

  • various new features and bugfixes (see subsections below)
  • UI tweaks
  • fewer typos (thanks @bwignall and @kostmo)
  • upgraded dependencies (>=lsp-1.6 and >=brick-1.5) and raised Stack resolver to use GHC 9.4 #1001
  • a ton of internal refactoring

Fixed bugs

  • copy parent robot context to child when executing build by @byorgey in #817
  • Merge new requirements context with existing when running from REPL by @byorgey in #965
  • Reset lastFrameTime when starting a new scenario by @byorgey in #855
  • Fix capability checking, and refactor/add lots of comments by @byorgey in #959
  • Fix EntityMap merging by @byorgey in #962
  • Fix: add first heard message to log by @xsebek in #842
  • Fix hypothetical result of condition by @xsebek in #940
  • One file per achievement record by @kostmo in #954
  • Show duplicate robot logs by @xsebek in #1022
  • Copy requirements map to robot context when loading a new ProcessedTerm by @byorgey in #827
  • Set REPL to Working when base has program field specified by @byorgey in #846
  • Create swarm subdirectories as necessary by @xsebek in #943

New Features

Swarm language

  • implement Equip/Unequip by @kostmo in #887
    • The great install/equip switch by @byorgey in #989
  • Meeting other robots by @byorgey in #920
  • New heading command by @byorgey in #955
  • Add isempty : cmd bool to check whether current cell has an entity by @byorgey in #968

Entities

  • Add GPS receiver device to provide senseloc capability by @byorgey in #956
  • Device with recipe for 'appear' capability by @kostmo in #1027
  • device for setname by @kostmo in #1028

LSP improvements

  • swarm-lang IDE hover by @kostmo in #972
  • Include SrcLoc info with variable binding sites by @byorgey in #993
  • Annotate ASTs with types at every node by @byorgey in #991
  • Improve OnHover for Def/Let, App and Const by @xsebek in #986
  • warn of unused variables by @kostmo in #983

Web API

  • Expose REPL history via web interface by @kostmo in #821

Command line options

  • Add full color mode option by @xsebek in #851

New scenarios

  • New ranching scenario by @kostmo in #835
  • new bind tutorial by @kostmo in #895
  • A "bucket brigade" of robots by @kostmo in #885
  • Ice Cream Shop by @kostmo in #1008
  • word search by @kostmo in #999
  • Wolf, Goat, Cabbage scenario by @kostmo in #944
  • swarm logo animation by @kostmo in #1018

Scenario development

  • Boolean expressions of objective prerequisites by @kostmo in #927
  • support 'orientationMap' by @kostmo in #1023
  • support custom attributes defined in scenarios by @kostmo in #1058

UI enhancements

  • show devices that enable commands by @kostmo in #899
  • Add a "driving mode" to the REPL by @kostmo in #819

Achievements

  • achievements board by @kostmo in #796
  • first tutorial completion achievement by @kostmo in #925
  • Add achievement for losing by @kostmo in #945

Debugging

  • Better CESK machine pretty-printing by @byorgey in #948
  • Add the full expected location for the data directory by @TristanCacqueray in #908
  • Extend logs for warnings by @xsebek in #982

0.2.0.0 - 2022-11-01

A bunch of small fixes and improvements; special thanks to new contributors @0xcefaedfe, @kostmo, @ussgarci, and @valyagolev. Notable changes include:

  • New UI features:
    • REPL improvements:
      • Expose the last evaluated result as it, and previous results as itN (#734)
      • Allow clicking in the REPL input to move the cursor (#750)
      • Autocomplete entity names in the repl (#798)
      • REPL cursor no longer blinks when REPL panel is not selected (#801)
    • Improve user experience around quitting & moving between tutorial challenges (#754)
      • Add a button to the Quit dialog to restart a scenario. (#767)
      • Use scenario name as Goal dialog title (#774)
    • autoplay flag for automatically demonstrating scenario solutions (#792)
    • Improved inventory sorting and user-controllable sort criteria (#793)
    • Ability to temporarily hide robots so you can see what's under them (#802)
  • New language features:
    • New void type (#735)
  • Bug fixes:
    • Fix bug in the first tutorial challenge that froze the game and ate all memory if the user said anything other than expected (#762, #810)
  • Documentation:
    • Generate all wiki "cheat sheets" automatically (#769)
  • Support for building on GHC 9.4 (#752)

There were several other small fixes and improvements; see the full changelog here.

0.1.1.0 - 2022-10-14

A couple new features and an important bugfix for the Hackage release.

  • Update to hsnoise-0.0.3, fixing some world generation bugs that only showed up in the Hackage release. (#746)
  • New "blank" creative scenario (#741)
  • REPL improvements
    • Ctrl-D at an empty REPL prompt now triggers a quit (#743)
    • The REPL panel now persists in showing the type of the most recently evaluated expression (#733)

0.1.0.1 - 2022-10-06

A bugfix release for a few minor bugs that plagued the first release:

  • Fall back to to the swarm data directory when a run file is not found (#730)
    • This bug caused the move tutorial to be unplayable because it tried to execute run "data/scenarios/Tutorials/move_system.sw"
  • Fix version check when there is no GitInfo (#729)
    • This bug caused the game to always report that there was a new version available even when you already had the latest (and only!) version.

0.1.0.0 - 2022-10-06

First Swarm release! Swarm already has:

  • a programming language based on the polymorphic lambda calculus + recursion, with a command monad for describing first-class imperative actions
  • scenarios which can be loaded from YAML files
    • the release comes with official challenges and an in-game tutorial
    • the default Classic and Creative modes use the same YAML syntax
    • we include JSON schemas for editor support when writing scenarios
  • procedural 2D world generation
  • LSP server built into the Swarm executable
  • Terminal UI interface
    • running the executable opens the Main menu by default
    • game screen with a world view, inventory and REPL
      • popup windows for messages, challenge descriptions, etc.