### ----------------------------------------------------
### -- MUGS
### -- Licenses: Artistic-2.0
### -- Authors: Geoffrey Broadwell
### -- File: docs/announce/v0.1.4.md
### ----------------------------------------------------
% 0.1.4 Release


# MUGS 0.1.4 Released!

The [Raku-MUGS org](https://github.com/Raku-MUGS) is proud to present our
fourth development release on the way to our next major milestone.  This
release includes many accumulated changes since 0.1.3, but the majority of
the milestone work is yet to be done.  :-)


## Packaging

MUGS is available in both source and package form, via these methods:


### `zef`

To simply play with what's already there, use `zef` to install all of `MUGS`
from the `zef/fez` ecosystem.  To prevent failure due to an **unneeded**
transitive dependency that does not exist on all systems, use the following
command:

```
zef install --exclude="pq:ver<5>:from<native>" MUGS
```

**NOTE:** If you're having trouble with installing via `zef`, please take
a look at our [installation guide](../howto/install-mugs.md), which has
additional troubleshooting hints.


### Source Repos

The source for all released MUGS repos can be found in the
[Raku-MUGS org on GitHub](https://github.com/Raku-MUGS).  Note that if you
are working on a UI repo, you will probably want to install MUGS with `zef`
as described above to satisfy dependencies, or at least install both
[MUGS-Core](https://github.com/Raku-MUGS/MUGS-Core) and
[MUGS-Games](https://github.com/Raku-MUGS/MUGS-Games).


### Docker

MUGS does not yet have prebuilt Docker packages, but each source repo
includes two `Dockerfile` scripts.  The main `Dockerfile` simply installs
the relevant MUGS libraries, scripts, and resources on top of a
`rakudo-star` official image and creates a default MUGS identity universe.
`Dockerfile.test` builds on that by also installing test identities into
the default universe.


## Primary Improvements

### Major TUI work

Just as with the previous MUGS release, much of the development effort
benefiting MUGS this time was actually focused on
[Terminal::Widgets](https://github.com/japhb/Terminal-Widgets)
and its new
[Terminal::Capabilities](https://github.com/japhb/Terminal-Capabilities)
dependency.

Terminal::Capabilities provides a standard container for describing
modern terminal capabilities at a feature level (such as symbol set support,
color depth support, and so on).  Both
[MUGS::UI::CLI](https://github.com/Raku-MUGS/MUGS-UI-CLI) and
[MUGS::UI::TUI](https://github.com/Raku-MUGS/MUGS-UI-TUI)
were updated to rely on Terminal::Capabilities rather than using custom code.

Terminal::Widgets gained over a dozen releases (`0.0.6` through `0.1.4`),
fixing bugs, refactoring, and adding large swathes of functionality.  Many of
these improvements were directly in support of work on MUGS::UI::TUI, which
made significant progress towards being a full frontend (rather than just
acting as a container for a particular game, as was the case in previous
releases).

There is still quite a bit of work to be done on MUGS::UI::TUI, but already it
has a full menu system that scales with terminal capabilities, configurable UI
elements, standardized screen layouts, translated UI text, color theme support,
and more.


## Other Improvements

### Bug Fixes

* Move WebSimple page templates to resources tree so that they will render
  correctly when installed by zef (PR by `codesections`)
* Work around deprecations and API changes in dependencies, including Rakudo
  itself
* Allow intentionally empty text input in CLI (either to trigger default
  behavior or to poll asynchronous inputs)
* Improve duospace handling for CLI tables


### Configuration

* Improve API for config defaults and ui-type-specific configuration
* Add new config defaults for CLI and TUI tunables
* Support --safe option to set most compatible UI configuration


### Debugging

* Convert `MUGS_DEBUG` into a UInt to allow tuning of debug verbosity
* Send debug output to $*ERR only and require higher `MUGS_DEBUG` levels
  for many high-volume debug outputs


### Performance

* Smooth out loading process (and provide progress updates in the TUI),
  despite increasing required components/dependencies
* Optionally record TUI startup and loading screen performance info


### Refactoring

* Several cross-repo refactorings to put things where they belong and simplify
  mental model
* Several internal refactorings to improve APIs and to correctly handle
  behavior that had been stubbed or hacked together before


### Security

* Minor improvements to user and username handling in Server


## Contributions

This development release is largely the work of Geoffrey Broadwell (`japhb` on
Libera.Chat and [GitHub](https://github.com/japhb)), and includes improvements
to terminal capabilities based on generous contributions of (sometimes very)
confused terminal emulator screenshots from the community to
[Terminal::Tests](https://github.com/japhb/Terminal-Tests/).  The fix allowing
WebSimple's templates to work correctly when installed with `zef` was provided
in a generous PR from `codesections`.

If you'd like to contribute to future releases, please take a look at
[our CONTRIBUTING doc](../CONTRIBUTING.md); we'd love to have you!


## Contacting Us

We are on the `#mugs` channel on Libera.Chat IRC; please come and ask
questions or offer suggestions!  Please note that we do not yet have
24-hour round-the-clock coverage, so please stick around and allow some
time for response if you don't get one immediately.

If you are interested in the more general world of game development on Raku,
we are also on the `#raku-gamedev` channel, also on Libera.Chat IRC.


## Future

The next few milestones have been sketched out in our
[release roadmap](../todo/release-roadmap.md).  Future releases are of
course subject to change, but the most likely changes are deferral of iffy
changes or incomplete features that are holding up release of finished work.


## Thank You

THANK YOU to the ever-helpful `#mugs` crew, to everyone who worked on the
many [projects on which MUGS is built](../design/built-with.md), to the
awesome and supportive Raku community, and of course to Larry, Damian,
Jonathan, Liz, and all the other Raku designers for creating a language that
brings joy day after day!


